DAO设计模式例子

来源:互联网 发布:手机怎么开通淘宝卖家 编辑:程序博客网 时间:2024/05/05 23:35

 

 

 

复制代码
 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 }
复制代码
0 0
原创粉丝点击