您的位置:首页 > 其它

DAO设计模式例子

2015-05-07 10:10 197 查看








 

 

 

1 <!-- 输入界面 -->
2 <%@page contentType="text/html" pageEncoding="GBK"%>
3 <html>
4   <head>
5   </head>
6   <% request.setCharacterEncoding("GBK"); //解决乱码问题 %>
7
8
9   <body>
10     <form action="emp_insert_do.jsp" method="post">
11     empno:<input type="text" name="empno"><br>
12
13     ename:<input type="text" name="ename"><br>
14
15      job: <input type="text" name="job"><br>
16
17      hiredate: <input type="text" name="hiredate"><br>
18
19     sal: <input type="text" name="sal"><br>
20
21
22     <input type="submit" value = "submit">
23     <input type="reset" value = "reset">
24     </form>
25   </body>
26 </html>


 

 

 

 

1 <!-- 后台插入数据 -->
2 <%@page import="info.haowei.Dao.factory.DAOFactory"%>
3 <%@page import="java.text.SimpleDateFormat"%>
4 <%@page import="info.haowei.Dao.vo.Emp"%>
5 <%@page contentType="text/html" pageEncoding="GBK"%>
6 <html>
7   <head>
8   </head>
9   <% request.setCharacterEncoding("GBK"); //解决乱码问题 %>
10
11
12   <body>
13     <%
14         Emp emp = new Emp();
15         emp.setEmpno(Integer.parseInt(request.getParameter("empno")));
16         emp.setEname(request.getParameter("ename"));
17         emp.setJob(request.getParameter("job"));
18
19         emp.setHiredate((new SimpleDateFormat("yyyy-MM-dd")).parse(request.getParameter("hiredate")));
20         emp.setSal(Float.parseFloat(request.getParameter("sal")));
21
22         try{
23
24         if(DAOFactory.getIEmpDAOInstance().doCreate(emp)){
25
26
27
28         %>
29
30         <h3>添加成功!!</h3>
31
32      <%
33      }else{
34      %>
35      <h3>添加失败!!!</h3>
36      <%
37      }
38      }catch(Exception e){
39      e.printStackTrace();
40      }
41       %>
42
43   </body>
44 </html>


 

 

 

1 //vo类
2 package info.haowei.Dao.vo;
3
4 import java.util.Date;
5
6 public class Emp {
7
8     private int empno;
9     private String ename;
10     private String job;
11     private Date hiredate;
12     private float sal;
13
14     public int getEmpno() {
15         return empno;
16     }
17     public void setEmpno(int empno) {
18         this.empno = empno;
19     }
20     public String getEname() {
21         return ename;
22     }
23     public void setEname(String ename) {
24         this.ename = ename;
25     }
26     public String getJob() {
27         return job;
28     }
29     public void setJob(String job) {
30         this.job = job;
31     }
32     public Date getHiredate() {
33         return hiredate;
34     }
35     public void setHiredate(Date hiredate) {
36         this.hiredate = hiredate;
37     }
38     public float getSal() {
39         return sal;
40     }
41     public void setSal(float sal) {
42         this.sal = sal;
43     }
44
45 }


 

 

 

1 //工厂类
2 package info.haowei.Dao.factory;
3
4 import info.haowei.Dao.dao.IEmpDAO;
5 import info.haowei.Dao.dao.proxy.EmpDAOProxy;
6
7 public class DAOFactory {
8
9     public static IEmpDAO getIEmpDAOInstance(){
10         return new EmpDAOProxy();
11     }
12 }


 

 

 

1 //操作数据库的类
2 package info.haowei.Dao.dbc;
3
4 import java.sql.Connection;
5 import java.sql.DriverManager;
6 import java.sql.SQLException;
7
8 public class DatabaseConnection {
9
10     private static final String DBDRIVER = "org.gjt.mm.mysql.Driver";
11     public static final String DBURL = "jdbc:mysql://localhost:3306/zhw";
12     public static final String DBUSER = "root";
13     public static final String DBPASS = "root";
14     private Connection conn;
15
16     public DatabaseConnection() {
17         try {
18             Class.forName(DBDRIVER);
19             this.conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
20         } catch (ClassNotFoundException e) {
21             e.printStackTrace();
22         } catch (SQLException e) {
23             e.printStackTrace();
24         }
25     }
26
27     public Connection getConnection() {
28         return this.conn;
29     }
30
31     public void close() {
32         if (this.conn != null) {
33             try {
34                 this.conn.close();
35             } catch (SQLException e) {
36                 e.printStackTrace();
37             }
38         }
39     }
40
41 }


 

 

 

 

1 //代理类.相当于回调吧
2 package info.haowei.Dao.dao.proxy;
3
4 import java.util.List;
5
6 import info.haowei.Dao.dao.IEmpDAO;
7 import info.haowei.Dao.dao.impl.EmpDAOImpl;
8 import info.haowei.Dao.dbc.DatabaseConnection;
9 import info.haowei.Dao.vo.Emp;
10
11 //代理
12 public class EmpDAOProxy implements IEmpDAO {
13
14     private DatabaseConnection dbc = null;
15     private IEmpDAO dao = null;
16
17     public EmpDAOProxy() {
18         this.dbc = new DatabaseConnection();
19         this.dao = new EmpDAOImpl(this.dbc.getConnection());
20     }
21
22     public boolean doCreate(Emp emp) {
23         boolean flag = false;
24         try {
25             if(this.dao.findById(emp.getEmpno())==null){
26                 flag = this.dao.doCreate(emp);
27             }
28
29         } catch (Exception e) {
30
31         } finally {
32             dbc.close();
33         }
34
35         return flag;
36     }
37
38     public List<Emp> findAll(String keyword) {
39         List<Emp>all  = null;
40         try {
41             all = this.dao.findAll(keyword);
42         } catch (Exception e) {
43
44         } finally {
45             dbc.close();
46         }
47         return all;
48     }
49
50     public Emp findById(int empno) {
51         Emp emp = null;
52         try {
53             emp = this.dao.findById(empno);
54         } catch (Exception e) {
55
56         } finally {
57             dbc.close();
58         }
59         return emp;
60     }
61 }


 

 

 

 

1 //接口实现类,具体操作封装类
2 package info.haowei.Dao.dao.impl;
3
4 import java.sql.Connection;
5 import java.sql.PreparedStatement;
6 import java.sql.ResultSet;
7 import java.sql.SQLException;
8 import java.util.ArrayList;
9 import java.util.List;
10
11 import javax.swing.text.html.HTMLDocument.HTMLReader.PreAction;
12
13 import info.haowei.Dao.dao.IEmpDAO;
14 import info.haowei.Dao.vo.Emp;
15
16 public class EmpDAOImpl implements IEmpDAO{
17
18
19     private Connection conn = null;
20     private PreparedStatement pstmt = null;
21     public EmpDAOImpl(Connection conn){
22         this.conn = conn;
23     }
24
25
26
27
28
29
30     public boolean doCreate(Emp emp) {
31
32         boolean flag = false;
33         String sql = "Insert into emp (empno,ename,job,hiredate,sal)Values(?,?,?,?,?)";
34
35         try {
36             this.pstmt = this.conn.prepareStatement(sql);
37             this.pstmt.setInt(1,emp.getEmpno());
38             this.pstmt.setString(2, emp.getEname());
39             this.pstmt.setString(3, emp.getJob());
40             this.pstmt.setDate(4, new java.sql.Date(emp.getHiredate().getTime()));
41             this.pstmt.setFloat(5, emp.getSal());
42             if(this.pstmt.executeUpdate()>0){//如果存在更新
43                 flag = true;
44             }
45             this.pstmt.close();
46         } catch (SQLException e) {
47             e.printStackTrace();
48         }
49         return flag;
50     }
51
52     public List<Emp> findAll(String keyword) {
53         List<Emp>all = new ArrayList<Emp>();
54         String sql = "select empno,ename,job,hiredate,sal from emp where ename like ? or job like ?";
55         try {
56             this.pstmt = this.conn.prepareStatement(sql);
57             this.pstmt.setString(1,"%"+keyword+"%");
58             this.pstmt.setString(2,"%"+keyword+"%");
59             ResultSet rs = this.pstmt.executeQuery();
60             Emp emp = null;
61             while(rs.next()){
62                 emp = new Emp();
63                 emp.setEmpno(rs.getInt(1));
64                 emp.setEname(rs.getString(2));
65                 emp.setJob(rs.getString(3));
66                 emp.setHiredate(rs.getDate(4));
67                 emp.setSal(rs.getFloat(5));
68                 all.add(emp);
69             }
70
71             this.pstmt.close();
72         } catch (SQLException e) {
73             e.printStackTrace();
74         }
75         return all;
76
77
78     }
79
80     public Emp findById(int empno) {
81         Emp emp = null;
82         String sql = "select empno,ename,job,hiredate,sal from emp where empno=?";
83         try {
84             this.pstmt = this.conn.prepareStatement(sql);
85             this.pstmt.setInt(1, empno);
86             ResultSet rs =  this.pstmt.executeQuery();
87             if(rs.next()){
88                 emp = new Emp();
89                 emp.setEmpno(rs.getInt(1));
90                 emp.setEname(rs.getString(2));
91                 emp.setJob(rs.getString(3));
92                 emp.setHiredate(rs.getDate(4));
93                 emp.setSal(rs.getFloat(5));
94             }
95             this.pstmt.close();
96         } catch (SQLException e) {
97             e.printStackTrace();
98         }
99         return emp;
100     }
101
102
103 }


 

 

 

 

1 //操作接口
2 package info.haowei.Dao.dao;
3
4 import java.util.List;
5
6 import info.haowei.Dao.vo.Emp;
7
8 public interface IEmpDAO {
9
10     public boolean doCreate(Emp emp);
11     public List<Emp>findAll(String keyword);
12     public Emp findById(int empno);
13
14 }


 

 

 

 

1 //主函数类
2
3 package info.haowei.Dao.test;
4
5 import java.util.Date;
6 import java.util.Iterator;
7 import java.util.List;
8
9 import info.haowei.Dao.factory.DAOFactory;
10 import info.haowei.Dao.vo.Emp;
11
12 public class DAOTest {
13
14     public static void main(String[] args) {
15
16         /*
17          * 插入
18         Emp emp = null;
19         for(int x = 0 ; x< 5; x++ ){
20             emp = new Emp();
21             emp.setEmpno(1000+x);
22             emp.setEname("zhw"+x);
23             emp.setJob("coding" +x);
24             emp.setHiredate(new Date());
25             emp.setSal(500+x);
26             DAOFactory.getIEmpDAOInstance().doCreate(emp);
27
28         }
29
30         */
31
32         List<Emp>all = DAOFactory.getIEmpDAOInstance().findAll("");
33         Iterator<Emp>iter = all.iterator();
34         while(iter.hasNext()){
35
36             Emp emp = iter.next();
37             System.out.println(emp.getEmpno()+"    "+emp.getEname());
38         }
39
40
41     }
42
43 }


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: