未改进的结果集处理器,每次新创建一个对象就要重新写一个结果集
StudentDaoImpl.java
class StuResultHandlerImpl implements IResultSetHandler<List<Student>> {
@Override
public List<Student> handler(ResultSet res) throws Exception {
// 创建集合
List<Student> list = new ArrayList<>();
while (res.next()) {
Student stu = new Student();
stu.setId(res.getInt("id"));
stu.setName(res.getString("name"));
list.add(stu);
}
return list;
}
}
定义接口:
//定义范型,不确定传入的类型
public interface IResultSetHandler<T> {
T handler(ResultSet res) throws Exception;
}
CRUDTemplate.java摸板类
public static <T>T executeQuery(String sql,IResultSetHandler<T> rh,Object...params){
Connection conn = null;
PreparedStatement ps = null;
ResultSet res = null;
try{
//1.加载驱动
//2.连接
conn = JDBCUtil.getConnection();
//3.创建SQL
ps = conn.prepareStatement(sql);
//4.遍历参数
for (int i = 0; i < params.length; i++) {
ps.setObject(i+1, params[i]);
}
//5.执行SQL
res = ps.executeQuery();
return rh.handler(res);
}catch(Exception e){
e.printStackTrace();
}finally{
//6.释放资源
JDBCUtil.close(conn, ps, res);
}
return null;
}