DBUtil与C3P0设计通用查询代码:
public <T> T query(String sql , ResultSetHandler<T> handler, Object ...args ){
Connection conn = null;
PreparedStatement ps=null;
try {
conn = JDBCUtil.getConn();
ps = conn.prepareStatement(sql);
//获取到有几个问号,占位符
ParameterMetaData metaData = ps.getParameterMetaData();
int count = metaData.getParameterCount();
for (int i = 0; i < count; i++) {
//因为不知道是什么类型的数据,所以都使用setObject来对待。
ps.setObject(i+1, args[i]);
}
//执行查询工作, 然后得到结果集
ResultSet rs = ps.executeQuery();
//把结果集丢给调用者,让它去封装数据 ,返回封装数据
T t = (T) handler.handle(rs);
return t;
//问题一: 这里的数据获取,以及封装成上面对象返回。不知道。 因为调用的地方需要的数据不同。
/*while(rs.next()){
rs.getInt("id");
rs.getString("name");
。。。
}*/
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtil.release(conn, ps);
}
return null;
}
public <T> T query(Strin