一、DBUtils简介
1.commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能。
2.三个核心类
(1)Dbutils工具类 和事务相关的方法
(2)ResultSetHander接口的实现类
(3)QueryRunner类
二、使用
- QueryRunner类 -- 做增删改查的操作
(1)方法
* QueryRunner()
* QueryRunner(DataSource ds)
* int update(String sql, Object... params)
* int update(Connection conn, String sql, Object... params)
* <T> T query(String sql, ResultSetHandler<T> rsh, Object... params)
* <T> T query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params)
(2)组合
没有事务
* QueryRunner(DataSource ds) -- 传入连接池(获取连接)
* int update(String sql, Object... params)
* <T> T query(String sql, ResultSetHandler<T> rsh, Object... params)
和事物相关的(conn向下传递)
* QueryRunner()
* int update(Connection conn, String sql, Object... params)
* <T> T query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params)
举例子:
@Test
public void run(){
QueryRunner runner = new QueryRunner(MyJdbcUtils_02.dataSource);
try {
runner.update("insert into orders(order_no,p_id) values(?,?);","test",2);
} catch (SQLException e) {
e.printStackTrace();
}
}
2.ResultSetHander接口,可以用户自己来实现。重写方法。
(1)BeanHandler -- 把一条记录封装到JavaBean对象中
(2)BeanListHandler -- 把一条记录封装到JavaBean对象中,把多个JavaBean放入List集合中。
(3)ArrayHandler -- 把一条记录封装到数组中
(4)ArrayListHandler, -- 把一条记录封装到数组中,把数组存放在集合中
(5)MapHandler -- 一条记录封装到Map集合
(6)MapListHandler -- 一条记录封装到Map集合,把Map集合存放到集合中
(7)ScalarHandler -- 封装count(*) 单行单列数据
(8)ColumnListHandler -- 查询是一列数据,把一列数据封装到集合中。
(9)KeyedHandler -- 把一条记录封装到一个map集合,把该map集合又存放在另一个map集合中。
* 重点 BeanHandler BeanListHandler ScalarHandler
例子:
@Test
public void run3(){
QueryRunner runner = new QueryRunner(MyJdbcUtils_02.dataSource);
String sql = "select * from orders;";
try {
List<Orders> list = runner.query(sql,new BeanListHandler<Orders>(Orders.class));
System.out.println(list.get(1).getOrder_no());
} catch (SQLException e) {
e.printStackTrace();
}
}
3.Dbutils类
和事物相关的方法
* static void rollbackAndClose(Connection conn)
* static void rollback(Connection conn)
* static void commitAndClose(Connection conn)