dbutils使用---QueryRunner、BeanListHandler、BeanHandler、MapListHandler、MapHandler、ScalarHandler等等

  1. ResultSetHandler 的作用: QueryRunner 的 query 方法的返回值最终取决于 query 方法的 ResultHandler 参数的 hanlde 方法的返回值。

  2. BeanListHandler: 把结果集转为一个 Bean 的 List, 并返回.。Bean的类型在创建 BeanListHanlder对象时以 Class对象的方式传入,可以适应列的别名来映射 JavaBean 的属性 名: String sql = "SELECT id, name customerName, email, birth " + “FROM customers WHERE id = ?”; BeanListHandler(Class type)。

  3. 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;
	}
  1. MapHandler: 把结果集转为一个 Map 对象, 并返回。若结果集中有多条记录, 仅返回 第一条记录对应的Map对象.。Map的键: 列名(而非列的别名), 值: 列的值。

  2. MapListHandler: 把结果集转为一个 Map 对象的集合, 并返回.。Map的键: 列名(而非列的别名), 值: 列的值。

  3. 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型
	}
  1. 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;
	}

猜你喜欢

转载自blog.csdn.net/qq_32650831/article/details/86762979