//DbUtil组件*****************************************************************
//核心类
QueryRunner qr = new QueryRunner();
QueryRunner qr = new QueryRunner(dataSource);
/*
传dataSource与不传的区别:
如果用无参的方法构造qr,那么在qr调用其所有方法时,必须要传入Connection对象(以下都是)
如果有参,则调用方法不需要Connection对象
*/
//查询语句
//ResultSetHandler<T> 是用来设置返回类型的
<T> T query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params);
//例如转为自定义User类型:
User user = qr.query(conn,sql,new ResultSetHandler<User>(){
//重写handle方法,rs为查询结果,该方法返回值即query返回值
public User handle(ResuleSet rs){
User user = new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
return user;
}
},params);
//用BeanHandler更为简单的实现方法:
User user = qr.query(conn,sql,new BeanHandler<User>(User.class),params);
//如果要返回一个JavaBean的List
List<User> userList = qr.query(conn,sql,new BeanListHandler<User>(User.class),params);
//返回结果的第一行,把第一行的每个属性转成一个对象,如{obj[0]=chenzhou,obj[1]=23,obj[2]=313980};
Object[] obj = qr.query(conn,sql,new ArrayHandler(),params);
//把返回的所有行都按如上形式转成obj[];
List<Object[]> list = qr.query(conn,sql,new ArrayListHandler(),params);
//返回结果的第一行第一列的值,一般用于count(*)查询,用Long类型
<T>T qr.query(conn,sql,new ScalarHandler<T>(),params);
//把返回的第一条记录封装成map,如{<name,chenzhou>,<id,313980>}
Map<String,Object> map = qr.query(conn,sql,new MapHandler(),params);
//更新语句
//执行带一个参数的sql,返回修改行数
int count = qr.update(conn,sql,params);
//执行带多个参数的sql
int count = qr.update(conn,sql,params1,params2);
//执行批处理
Object[][] params;
int[] count = qr.batch(conn,sql,params);
网友评论