你的位置:首页 > Java教程

[Java教程]Java——JDBC小结终结


在JDBC的最后一个内容中,我将叙述的是最后一个概念DAO

1.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 jiawenzhe11  *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 block40       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());    }  }