[code]
//用传递参数的方式把变化部分提取出来
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);
}
}
[/code]
//用传递参数的方式把变化部分提取出来
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);
}
}
[/code]