`

jdbc---abstractDao

    博客分类:
  • JDBC
阅读更多
//用传递参数的方式把变化部分提取出来


public abstract class AbstractDao{
   public int update(String sql,Object[] args){
       Connection conn = null;
       PreparedStatement ps = null;
       ResultSet rs = null;
       try{
           conn = JdbcUtils.getConnection();
           ps = conn.prepareStatement(sql);
           for(int i=0;i<args.length;i++)
             ps.setObject(i+1,args[i]);
           return ps.executeUpdate();  
      
       }catch(Exception e){
         throw new Exception(e.getMessage(),e);
       }finally{
         jdbcUtils.free(rs,ps,conn);
       }
   }

    public Object find(String sql,Object[] args){
       Connection conn = null;
       PreparedStatement ps = null;
       ResultSet rs = null;
       try{
           conn = JdbcUtils.getConnection();
           ps = conn.prepareStatement(sql);
           for(int i=0;i<args.length;i++)
             ps.setObject(i+1,args[i]);
            rs = ps.executeQuery();  
           Object obj = null;
            if(rs.next()){
              obj = rowMapper(rs); //这个地方有个缺点,就是随着sql语句的变化,这个东西会不一样的,虽然是交给子类去实现,但是子类只能实现一个,不能实现多个
            }
      
       }catch(Exception e){
         throw new Exception(e.getMessage(),e);
       }finally{
         jdbcUtils.free(rs,ps,conn);
       }
   }

abstract protected Object  rowMapper(ResultSet rs);

   
}


public class UserDaoImpl extends AbstractDao{
   public void update(User user){
      String sql = "update user set name =?,birthday=?,money=? where id = ?";
       Object[] args = new Object[]{user.getName(),user.getBirthday(),user.getMoney(),user.getId()};
       super.ipdate(sql,args);
   }
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics