Home >Database >Mysql Tutorial >JDBCDAO优化
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 List<teacherpojo> query() throws Exception; public Teacherpojo queryById(int id) throws Exception; }</teacherpojo>
具体实现语句预制的方法:
public static int update(String sql,Object...objects) throws Exception { Connection con = SQLUtil.getConnection();//获取连接 PreparedStatement ps = con.prepareStatement(sql);//获取预制对象 for (int i=0;i<objects.length ps.setobject objects return ps.executeupdate><br> <br> <br> 子类实现(添加一条数据): <p><span style="font-size:24px"></span></p> <pre name="code" class="java">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 ArrayList<teacherpojo> query() throws SQLException { Connection con = SQLUtil.getConnection(); Statement state = con.createStatement(); String sql = "select * from teacher"; ResultSet rs = state.executeQuery(sql); ArrayList<teacherpojo> list = new ArrayList<teacherpojo>(); 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; }</teacherpojo></teacherpojo></teacherpojo>
很多时候并不是要查询所有的结果,要的是部分条件查询结果,所有可以写一个预制查找的方法,代码如下:
public static ResultSet query(String sql,Object...objects) throws Exception{ Connection con = SQLUtil.getConnection(); PreparedStatement ps = con.prepareStatement(sql); for (int i = 0; i <br> 结果图示,我只搜索关于gender为man的数据: <p><span style="font-size:24px"><img src="http://img.blog.csdn.net/20160506200506812?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt=""><br> </span></p> <p><span style="font-size:24px"><br> </span></p> <p><span style="font-size:24px"><br> </span></p> <p><span style="font-size:24px"><br> </span></p> <p><span style="font-size:24px"><br> </span></p>