JDBC(十)使用 DBUtils

1. DBUtils 简介

1)commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,
并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能。

2)API介绍:
org.apache.commons.dbutils. QueryRunner
org.apache.commons.dbutils. ResultSetHandler

3)工具类
org.apache.commons.dbutils.DbUtils


2. QueryRunner类 

1)该类简单化了SQL查询,它与ResultSetHandler组合在一起使用可以完成大部分的数据库操作,能够大大减少编码量。
2)QueryRunner类提供了两个构造方法:
默认的构造方法
需要一个 javax.sql.DataSource 来作参数的构造方法。


3. ResultSetHandler接口

1)该接口用于处理 java.sql.ResultSet,将数据按要求转换为另一种形式。
2)ResultSetHandler 接口提供了一个单独的方法:Object handle (java.sql.ResultSet  rs) 。
3)ResultSetHandler 的作用: QueryRunner 的 query 方法的返回值最终取决于
query 方法的 ResultHandler 参数的 hanlde 方法的返回值。

4. ResultSetHandler 接口的实现类

BeanHandler :将结果集中的第一行数据封装到一个对应的JavaBean实例中。
BeanListHandler
:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。
MapHandler
:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。
MapListHandler
:将结果集中的每一行数据都封装到一个Map里,然后再存放到List。
ScalarHandler
: 返回结果集第一行第一列的值.
ArrayHandler:把结果集中的第一行数据转成对象数组。
ArrayListHandler:把结果集中的每一行数据都转成一个数组,再存放到List中。
ColumnListHandler:将结果集中某一列的数据存放到List中。
KeyedHandler(name):将结果集中的每一行数据都封装到一个Map里,再把这些map再存到一个map里,其key为指定的key。


5. 测试

	QueryRunner queryRunner = new QueryRunner();
	@Test
	public void testBeanHandler(){
		
		Connection conn = null;
		String sql = "select * from car where id > ?";
		try {
			conn = JDBCTools.getConnection();
			Car car = queryRunner.query(conn, sql, new BeanHandler(Car.class),1);
			System.out.println(car);
			//Car [id=2, brand=宝马, price=350000]
		} catch (Exception e) {
			e.printStackTrace();
		} finally{
			JDBCTools.releaseDB(null, null, conn);
		}
	}
	
	@Test
	public void testBeanListHandler(){
		Connection conn = null;
		String sql = "select * from car where id > ?";
		try {
			conn = JDBCTools.getConnection();
			List<Car> cars = queryRunner.query(conn, sql, new BeanListHandler(Car.class),1);
			System.out.println(cars);
			//[Car [id=2, brand=宝马, price=350000], Car [id=3, brand=卡宴, price=350000],..]
		} catch (Exception e) {
			e.printStackTrace();
		} finally{
			JDBCTools.releaseDB(null, null, conn);
		}
	}
	
	@Test
	public void testMapHandler(){
		Connection conn = null;
		String sql = "select * from car where id > ?";
		try {
			conn = JDBCTools.getConnection();
			Map<String, Object> car= queryRunner.query(conn, sql, new MapHandler(),1);
			System.out.println(car);
			//{id=2, price=350000, brand=宝马}
		} catch (Exception e) {
			e.printStackTrace();
		} finally{
			JDBCTools.releaseDB(null, null, conn);
		}
	}
	
	@Test
	public void testMapListHandler(){
		Connection conn = null;
		String sql = "select * from car where id > ?";
		try {
			conn = JDBCTools.getConnection();
			List<Map<String, Object>> cars = queryRunner.query(conn, sql, new MapListHandler(),1);
			System.out.println(cars);
			//[{id=2, price=350000, brand=宝马}, {id=3, price=350000, brand=卡宴}, ..]
		} catch (Exception e) {
			e.printStackTrace();
		} finally{
			JDBCTools.releaseDB(null, null, conn);
		}
	}
	
	@Test
	public void testScalarHandler(){
		Connection conn = null;
		String sql = "select * from car where id > ?";
		try {
			conn = JDBCTools.getConnection();
			Object obj = queryRunner.query(conn, sql, new ScalarHandler(),1);
			System.out.println(obj);
			//2
		} catch (Exception e) {
			e.printStackTrace();
		} finally{
			JDBCTools.releaseDB(null, null, conn);
		}
	}









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值