JDBC(十)使用 DBUtils

来源:互联网 发布:软件开发技术培训 编辑:程序博客网 时间:2024/06/05 08:10

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();@Testpublic 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);}}@Testpublic 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);}}@Testpublic 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);}}@Testpublic 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);}}@Testpublic 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