时间:2021-07-01 10:21:17 帮助过:41人阅读
DAO(Data Access Object)数据访问对象是一个数据访问接口,处理业务逻辑与数据库资源之间的关系。 DAO由两部分组成: 1.Data Access:数据访问,实现数据访问与业务逻辑的分离。 2.Action Domain Object:领域对象,业务数据对象的封装。 DAO模式的实现: 1.DA
DAO(Data Access Object)数据访问对象是一个数据访问接口,处理业务逻辑与数据库资源之间的关系。
1.Data Access:数据访问,实现数据访问与业务逻辑的分离。
2.Action Domain Object:领域对象,业务数据对象的封装。
1.DAO的工厂类:构造DAO的实例对象。
2.DAO的接口:提供接口抽象方法,引导子类实现。
3.DAO的实现子类:实现接口方法。
4.数据对象:封装数据。
1.dao包:存放抽象接口的方法。
2.dao.impl包:存放实现子类的方法。
3.pojo包:存放封装的数据信息。
4.util包:存放工厂类。
父类接口:
public interface TeacherDao {//父类接口 public boolean insert(Teacherpojo tea) throws Exception; public boolean delete(int id) throws Exception; public boolean update(Teacherpojo tea) throws Exception; public Listquery() throws Exception; public Teacherpojo queryById(int id) throws Exception; }
具体实现语句预制的方法:
public static int update(String sql,Object...objects) throws Exception { Connection con = SQLUtil.getConnection();//获取连接 PreparedStatement ps = con.prepareStatement(sql);//获取预制对象 for (int i=0;i
public boolean insert(Teacherpojo tea) throws Exception { String sql = "insert into teacher (id,name,gender,age,job,creatDate) " + "values(?,?,?,?,?,?)"; int result = SQLTemplete.update(sql, tea.getId(),tea.getName(), tea.getGender(),tea.getAge(),tea.getJob(),tea.getCreatdate()); System.out.println("执行完成..."); if(result > 0){ return true; } return false; }
删除一条数据:
public boolean delete(int id) throws Exception { String sql = "delete from teacher where id=?"; int result = SQLTemplete.update(sql, id); System.out.println("执行完成..."); if( result > 0 ){ return true; } return false; }
修改一条数据:
public boolean update(Teacherpojo tea) throws Exception { String sql = "update teacher set " + "id=?,name=?,gender=?,age=?,job=?,creatDate=? where id=?"; int result = SQLTemplete.update(sql, tea.getId(),tea.getName(),tea.getGender(), tea.getAge(),tea.getJob(),tea.getCreatdate(),tea.getId()); System.out.println("执行完成..."); if( result > 0 ){ return true; } return false; }
查找所有的数据,返回一个数据队列:
public ArrayListquery() throws SQLException { Connection con = SQLUtil.getConnection(); Statement state = con.createStatement(); String sql = "select * from teacher"; ResultSet rs = state.executeQuery(sql); ArrayList list = new ArrayList (); Teacherpojo tp ; while(rs.next()){ tp = new Teacherpojo(); tp.setId(rs.getInt("id")); tp.setName(rs.getString("name")); tp.setAge(rs.getInt("age")); tp.setGender(rs.getString("gender")); tp.setJob(rs.getString("job")); tp.setCreatdate(rs.getString("creatDate")); list.add(tp); } System.out.println("执行完成..."); return list; }
很多时候并不是要查询所有的结果,要的是部分条件查询结果,所有可以写一个预制查找的方法,代码如下:
public static ResultSet query(String sql,Object...objects) throws Exception{ Connection con = SQLUtil.getConnection(); PreparedStatement ps = con.prepareStatement(sql); for (int i = 0; i < objects.length; i++) { ps.setObject(i+1, objects[i]);//查询语句预制 } return ps.executeQuery();//发送并执行 }