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
- DAO设计模式例子
- DAO模式的例子
- 实现DAO 设计模式
- DAO设计模式
- 实现DAO 设计模式
- 什么DAO设计模式
- 设计模式--DAO
- DAO设计模式
- DAO设计模式
- 实现DAO 设计模式
- DAO设计模式(转)
- DAO 设计模式 总结
- DAO设计模式笔记
- DAO设计模式总结
- dao设计模式
- DAO设计模式
- DAO设计模式
- DAO 设计模式
- sql连接字符串
- GIS阅读思考
- 物体空间姿态估计// Robust Planar Pose (RPP)algorithm
- GIS数据下载集合
- 关于“ArcGIS Server的切片原理深入…
- DAO设计模式例子
- <<thinking in java>>阅读笔记01
- 为什么需要异常处理(转载)
- ArcEngine高亮显示
- 对Margin的理解
- Silverlight缩放到指定要素
- 多线程 -- run()方法和start()方法的区别
- Session技术
- 【转】《千与千寻》 那首平静的曲…