-
ResultSetHandler 的作用: QueryRunner 的 query 方法的返回值最终取决于 query 方法的 ResultHandler 参数的 hanlde 方法的返回值。
-
BeanListHandler: 把结果集转为一个 Bean 的 List, 并返回.。Bean的类型在创建 BeanListHanlder对象时以 Class对象的方式传入,可以适应列的别名来映射 JavaBean 的属性 名: String sql = "SELECT id, name customerName, email, birth " + “FROM customers WHERE id = ?”; BeanListHandler(Class type)。
-
BeanHandler: 把结果集转为一个 Bean,并返回。Bean的类型在创建BeanHandler 对象时以 Class 对象的方式传入 BeanHandler(Class type)。
例子(javaEE三层架构的dao层):(通过pid字段查询数据库中表的product,并返回一个实体类product)
public Product findProductByPid(String pid) throws SQLException {
QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());
String sql = "select * from product where pid=?";
Product product = runner.query(sql, new BeanHandler<Product>(Product.class), pid);
return product;
}
-
MapHandler: 把结果集转为一个 Map 对象, 并返回。若结果集中有多条记录, 仅返回 第一条记录对应的Map对象.。Map的键: 列名(而非列的别名), 值: 列的值。
-
MapListHandler: 把结果集转为一个 Map 对象的集合, 并返回.。Map的键: 列名(而非列的别名), 值: 列的值。
-
ScalarHandler: 可以返回指定列的一个值或返回一个统计函数的值,比如count(1)。
例子(javaEE三层架构的dao层):
//获得全部的商品条数
public int getTotalCount() throws SQLException {
QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());
String sql = "select count(*) from product";//product表
Long query = (Long) runner.query(sql, new ScalarHandler());
return query.intValue();//把Long型变量转为int型
}
- ColumnListHandler: 将结果集中某一列字段的数据存放到List中。
例子:
//查询数据库中表product中字段为pname的数据
public List<Object> findProductByWord(String word) throws SQLException {
QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());
String sql = "select * from product where pname like ? limit 0,8";//limit 0,8表示最多显示8条
List<Object> query = runner.query(sql, new ColumnListHandler("pname"), "%"+word+"%");//加%是模糊查询
return query;
}