标签:
在JDBC的最后一个内容中,我将叙述的是最后一个概念DAO
DAO(Data Access Object)数据访问对象,他是建立在业务层与数据库之间,目的就是为了分开数据访问逻辑和业务逻辑
接下来我直接说明关于DAO的建立,首先要先创建一个实体类,并对其进行序列化,实体类里面包含的是数据表的各个字段,同时要包含他们各自的get,set方法,示例代码如下:
1 package entity; 2 3 import java.io.Serializable; 4 import java.util.Date; 5 6 /** 7 * 1.通常实体类名和表名一致 8 * 2.通常该类中的属性名和字段名一致 9 * 3.通常该类中的属性都使用封装类型 10 * @author jiawenzhe 11 * 12 */ 13 public class emp implements Serializable { 14 private Integer empno; 15 private String ename; 16 private String jod; 17 private Integer mgr; 18 private Date hiredate; 19 private Double sal; 20 private Double comm; 21 private Integer deptno; 22 public Integer getEmpno() { 23 return empno; 24 } 25 public void setEmpno(Integer empno) { 26 this.empno = empno; 27 } 28 public String getEname() { 29 return ename; 30 } 31 public void setEname(String ename) { 32 this.ename = ename; 33 } 34 public String getJod() { 35 return jod; 36 } 37 public void setJod(String jod) { 38 this.jod = jod; 39 } 40 public Integer getMgr() { 41 return mgr; 42 } 43 public void setMgr(Integer mgr) { 44 this.mgr = mgr; 45 } 46 public Date getHiredate() { 47 return hiredate; 48 } 49 public void setHiredate(Date hiredate) { 50 this.hiredate = hiredate; 51 } 52 public Double getSal() { 53 return sal; 54 } 55 public void setSal(Double sal) { 56 this.sal = sal; 57 } 58 public Double getComm() { 59 return comm; 60 } 61 public void setComm(Double comm) { 62 this.comm = comm; 63 } 64 public Integer getDeptno() { 65 return deptno; 66 } 67 public void setDeptno(Integer deptno) { 68 this.deptno = deptno; 69 } 70 71 }
接下来再创建一个包用来存放DAO这个类,DAO中我们要建立一个方法,该方法的作用通过给定的字段返回我们要查找的字段,所以这个方法的返回值是一个泛型集合,且里面存放的类型是刚才我们创建的实体类类型。
1 package dao; 2 3 import java.net.ConnectException; 4 import java.sql.Connection; 5 import java.sql.PreparedStatement; 6 import java.sql.ResultSet; 7 import java.sql.SQLException; 8 import java.util.List; 9 10 import util.DBUtil; 11 import entity.emp; 12 13 public class EmpDao { 14 public List<emp> findAll(){ 15 return null; 16 } 17 public emp findById(int id){ 18 Connection conn=null; 19 try { 20 conn=DBUtil.getConnection(); 21 String sql ="select *from emp_jiawenzhe where empno=?"; 22 PreparedStatement ps=conn.prepareStatement(sql); 23 ps.setInt(1, id); 24 ResultSet rs=ps.executeQuery(); 25 if(rs.next()){ 26 emp e=new emp(); 27 e.setEmpno(rs.getInt("empno")); 28 e.setEname(rs.getString("ename")); 29 e.setJod(rs.getString("job")); 30 e.setMgr(rs.getInt("mgr")); 31 e.setHiredate(rs.getDate("hiredate")); 32 e.setSal(rs.getDouble("sal")); 33 e.setComm(rs.getDouble("comm")); 34 e.setDeptno(rs.getInt("deptno")); 35 return e; 36 } 37 38 } catch (SQLException e) { 39 // TODO Auto-generated catch block 40 e.printStackTrace(); 41 throw new RuntimeException("wrong",e); 42 }finally{ 43 DBUtil.close(conn); 44 } 45 return null; 46 } 47 48 }
我这里面的返回值是一个emp的实体类,因为是要根据指定的id找到那个对应的人,具体的返回值情况都是根据实际情况确定,这里面我们再次调用了最开始的工具类
最后给出测试代码
@Test public void test6(){ EmpDao dao=new EmpDao(); emp e= dao.findById(7369); if(e!=null){ System.out.println(e.getEname()+","+e.getJod()); } }
标签:
原文地址:http://www.cnblogs.com/jwz-bk/p/5493211.html