文章内容输出来源:拉勾教育JAVA就业训练营
总目录跳转链接:总目录
如有侵权请联系本人
邮箱:xiaogueika@tom.com
一、DBUtils简介
使用JDBC我们发现冗余的代码太多了,为了简化开发 我们选择使用 DBUtils
Commons DbUtils是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开发,同时也不会影响程序的性能。
- 使用方式:
DBUtils就是JDBC的简化开发工具包。需要项目导入commons-dbutils-1.6.jar。
二、Dbutils核心功能介绍
- QueryRunner 中提供对sql语句操作的API.
- ResultSetHandler接口,用于定义select操作后,怎样封装结果集.
- DbUtils类,他就是一个工具类,定义了关闭资源与事务处理相关方法.
三、DBUtils完成 CRUD操作
1. QueryRunner核心类
- 构造方法
QueryRunner()
QueryRunner(DataSource ds)
,提供数据源(连接池),DBUtils底层自动维护连接connection
- 常用方法
update(Connection conn, String sql, Object... params)
,用来完成表数据的增加、删除、更新操作query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params)
,用来完成表数据的查询操作
2. QueryRunner的创建
2.1 手动模式
//手动方式 创建QueryRunner对象
QueryRunner qr = new QueryRunner();
2.2 自动模式需要传入连接池对象
//获取连接池对象
public static DataSource getDataSource(){
return dataSource;
}
QueryRunner qr = new QueryRunner(DruidUtils.getDataSource());
3. QueryRunner实现增、删、改操作
update(Connection conn, String sql, Object... params)
参数 | 说明 |
---|---|
Connection conn | 数据库连接对象, 自动模式创建QueryRun 可以不传 ,手动模式必须传递 |
String sql | 占位符形式的SQL ,使用 ? 号占位符 |
Object… param Object | 类型的 可变参,用来设置占位符上的参数 |
步骤
- 创建QueryRunner(手动或自动)
- 占位符方式 编写SQL
- 设置占位符参数
- 执行
4. QueryRunner实现查询操作
4.1 ResultSetHandler接口简介
ResultSetHandler可以对查询出来的ResultSet结果集进行处理,达到一些业务上的需求。
4.2 ResultSetHandler 结果集处理类
本例展示的是使用ResultSetHandler接口的几个常见实现类实现数据库的增删改查,可以大大减少代码量,优化程序。
每一种实现类都代表了对查询结果集的一种处理方式
ResultSetHandler实现类 | 说明 |
---|---|
**ArrayHandler ** | 将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值 |
ArrayListHandler | 将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。 |
BeanHandler | 将结果集中第一条记录封装到一个指定的javaBean中. |
BeanListHandler | 将结果集中每一条记录封装到指定的javaBean中,再将这些javaBean在封装到List集合中 |
ColumnListHandler | 将结果集中指定的列的字段值,封装到一个List集合中 |
KeyedHandler | 将结果集中每一条记录封装到Map<String,Object>,在将这个map集合做为另一个Map的value, 另一个Map集合的key是指定的字段的值。 |
MapHandler | 将结果集中第一条记录封装到了Map<String,Object>集合中,key就是字段名称, value就是字段值 |
MapListHandler | 将结果集中每一条记录封装到了Map<String,Object>集合中,key就是字段名称, value就是字段值,在将这些Map封装到List集合中。 |
ScalarHandler | 它是用于封装单个数据。例如 select count(*) from 表操作。 |
4.3 ResultSetHandler 常用实现类测试
- QueryRunner的查询方法
- query方法的返回值都是泛型,具体的返回值类型,会根据结果集的处理方式,发生变化
方法 | 说明 |
---|---|
query(String sql, handler ,Object[] param) | 自动模式创建QueryRunner, 执行查询<b |
query(Connection con,String sql,handler,Object[] param) | 手动模式创建QueryRunner, 执行查询 |