dbUtils 工具类介绍
- 导包:
commons-dbutils.jar
- 核心类:
QueryRunner
- 常用方法:
// 执行增,删,改语句, 返回影响的行数
int update(String sql,Object... params);
// 执行增, 删, 改语句, 但是需要调用者提供 Connection 对象, 支持事务.
int update(Connection ,String sql, Object... params);
// 执行查询方法
// 返回值类型为 T, 因为 ResultSetHandler 中的 handle 方法会把 ResultSet 结果集转换为 T 类型
T query(String sql, ResultSetHandler rsh, Object...params);
// 执行查询方法, 但是需要调用者提供 Connection 对象, 支持事务
T query(Connection con, String sql, ResultSetHandler rsh, Object... params);
4. ResultSetHandler 接口的实现类
- 单行结果:
BeanHandler()
, 构造器需要一个 Class 类型的参数, 用来把一行结果转换成指定类型的 javaBean 对象; - 多行结果:
BeanListHandler()
, 构造器需要一个 Class 类型的参数, 用来把一行结果转换成一个 javaBean,
若是多行结果, 就转换成 List 对象, 即多个 javaBean; - 单行结果:
MapHandler()
, 把一行结果转换成 Map; - 多行结果:
MapListHandler()
, 把一行记录转换成一个 Map, 若是多行, 就是多个 Map, 即 List - 单行单列:
ScalarHandler()
, 结果集是单行单列的, 返回一个 Object.
通常用于SELECT count(*) FROM t_stu;
单行记录
Map 集合
{sid:1001,sname:zhangsan,age:22,gender:male}
// 示例
// BeanHandler() 和 MapHandler()
public void fun() throws Exception{
QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());
String sql = "SELECT * FROM t_stu WHERE sid=?";
Object[] params = {1001};
// BeanHandler()
Stu stu = qr.query(sql,new BeanHandler<Stu>(stu.class),params);
System.out.println(stu);
// MapHandler()
Map map = qr.query(sql,new MapHandler(),params);
System.out.println(map);
}
// BeanListHandler() 和 MapListHandler()
public void fun1() throws SQLException{
QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());
String sql = "SELECT * FROM t_stu";
// BeanListHandler()
List<Stu> stuList = qr.query(sql, new BeanListHandler<Stu>(Stu.class));
System.out.println(stuList);
// MapListHandler()
List<Map<String,Object>> mapList = qr.query(sql, new MapListHandler());
Sytem.out.println(mapList);
}
// ScalarHandler()
public void fun2() throws SQLException{
QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());
String sql = "SELECT COUNT(*) FROM t_stu";
// 此处 obj 类型可能为 Integer, Long, BigInteger
// 但是这三种类型有共同的父类 Number
Number obj = (Number)qr.query(sql,new ScalarHandler());
System.out.println(obj);
}
参考资料: