一、DBUtil介绍
DBUtil是什么及作用
DBUtil是Apache提供的一个开源的JDBC工具类库,是java编程中数据库操作实用工具,小巧简单。
DBUtil封装了对JDBC的操作,简化了JDBC操作,可以让我们少些代码。
1.对数据表的读操作
可以将结果转换成List、Array、Set等集合。
2.对数据表的写操作
只需要写SQL语句
3.可以使用数据源,使用JNDI,数据库连接池等技术来优化程序性能。
二、DBUtil的三个核心对象
QueryRunner类
QueryRunner中提供对sql语句的操作,主要有三个方法:
1.query()用于执行select操作
2.update()用于执行更新操作(insert、update、delete)
3.batch()批处理
ResultSetHandler接口
定义了执行select操作后如何封装结果集
DBUtils类
是一个工具类,定义了关闭资源和事务处理的方法
1.QueryRunner类
构造函数:
QueryRunner有四个构造函数,这里主要讲两个
1)QueryRunner qr = new QueryRunner();
这个构造函数没有参数,可以用于需要手动控制事务,在使用该对象调用方法时(query,update,batch),需要传入Connection对象
2) QueryRunner qr = new QueryRunner(DataSource ds);
这个构造函数可以传入一个数据源参数,它的事务是自动控制的(一个sql一个事务),在使用该对象调用方法时,不用再传入Connection对象。
方法:query(),update(),batch()
下面写几个例子:
1)建数据表(这里我就用自己原有的数据表了)
2)创建项目导入jar包
3)代码示例
1 public class TestQueryRunner {
2
3 // insert操作
4 @Test
5 public void testInsert() throws SQLException {
6 // 创建QueryRunner对象
7 QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
8 qr.update("insert into user(username,password,email,birthday) values(?,?,?,?)",
9 "xiaoming","123456","xiaoming@163.com",new Date());
10 }
11
12 // update操作
13 @Test
14 public void testUpdate() throws SQLException {
15 QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
16 qr.update("update user set password = ? where username = ?","123123","xiaoming");
17
18 }
19
20 // delete操作
21 @Test
22 public void testDelete() throws SQLException {
23 QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
24 qr.update("delete from user where id = ?",9);
25 }
26
27 // select操作
28 @Test
29 public void testSelect() throws SQLException {
30 QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
31 User user = qr.query("select * from user where username = ?",
32 new BeanHandler<User>(User.class),"xiaoming");
33 System.out.println(user);
34 }
35
36 // batch操作(执行相同的sql语句)
37 @Test
38 public void testBatch() throws SQLException {
39 QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
40 // 传入一个二维数组,高维是需要执行的sql语句的次数,低维为需要给sql语句中?赋的值
41 Object[][] params = new Object[10][];
42 for (int i = 0; i < params.length; i++) {
43 params[i] = new Object[] {
"xiaoming",