使用DBUtils增删改查的操作



使用DBUtils增删改查的操作

如果只是用JDBC进行开发,冗余代码过多,为了简化JDBC开发,采用apache commons组件一个成员:DBUtils。
DBUtils就是JDBC的简化开发工具包。需要使用技术:连接池(获得连接),SQL语句。

1.JavaBean组件

代码:

package cn.itheima.domain;

public class User {
private int uid;
private String uname;
private String upassword;
public User() {

}
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUpassword() {
return upassword;
}
public void setUpassword(String upassword) {
this.upassword = upassword;
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2.DBUtils概述
DBUtils是java编程中的数据库操作使用工具,小巧简单使用。
DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。
DBUtils三个核心功能介绍:
QueryRunner中提供对sql语句操作的API
ResuleSetHandler结构,用于定义select操作后,怎样封装结果集
DbUtils类,它就是一个工具类,定义了关闭资源与实务处理的方法

3.QueryRunner核心类
4.ResuleSetHandler结果集处理类
5.DbUtils工具类
closeQuiety(Connection conn) 关闭连接,如果有异常try后不抛
commitAndCliseQuietly(Connection conn) 提交并关闭连接
rollbackAndCloseQuietly(Connection conn) 回滚并关闭连接

6.实现增删改操作
package cn.itheima.jdbc.test;
import java.sql.SQLException;

import org.apache.commons.dbutils.QueryRunner;
import org.junit.Test;

import cn.itheima.jdbc.utils.C3P0Utils;
/**
* 测试DBUtils工具类的增删改操作
* @author Administrator
*
*/
public class TestDBUtils {

/**
* 添加所有用户方法
*/
@Test
public void testAddUser() {
//1.創建核心類QueryRunner
QueryRunner qr =new QueryRunner(C3P0Utils.getDataSource());
//2.編寫SQL語句
String sql=”insert into tbl_user values(null,?,?)”;
//3.為占位符設置值
Object[] params = {“余淮”,”耿耿”};
//4.执行添加操作
try {
int rows=qr.update(sql,params);
if(rows>0) {
System.out.println(“添加成功!”);
}else {
System.out.println(“添加失败!”);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

/**
* 根据id修改用户方法
*/
@Test
public void testUpdateUserById() {
//1.創建核心類QueryRunner
QueryRunner qr =new QueryRunner(C3P0Utils.getDataSource());
//2.編寫SQL語句
String sql=”update tbl_user set upassword=? where uid=?”;
//3.為占位符設置值
Object[] params = {“xxx”,8};
//4.执行添加操作
try {
int rows=qr.update(sql,params);
if(rows>0) {
System.out.println(“修改成功!”);
}else {
System.out.println(“修改失败!”);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

/**
* 根据id删除用户方法
*/
@Test
public void testDeleteUserById() {
//1.創建核心類QueryRunner
QueryRunner qr =new QueryRunner(C3P0Utils.getDataSource());
//2.編寫SQL語句
String sql=”delete from tbl_user where uid=?”;
//3.為占位符設置值
Object[] params = {5};
//4.执行添加操作
try {
int rows=qr.update(sql,params);
if(rows>0) {
System.out.println(“删除成功”);
}else {
System.out.println(“删除失败!”);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
运行结果:

 

 
7.实现查操作
package cn.itheima.jdbc.test;

import java.sql.SQLException;
import java.util.List;
import java.util.Map;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ColumnListHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import org.junit.Test;

import cn.itheima.domain.User;
import cn.itheima.jdbc.utils.C3P0Utils;
/**
* 测试DBUtils查询操作
*
* @author Administrator
*
*/
public class TestDBUtils2 {

/**
* 查询所有用户方法
*/
@Test
public void testQueryAll() {

try {
//1.获取核心类QueryRunner
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
//2.编写sql语句
String sql=”select * from tbl_user”;
//3.执行查询操作
List<User> users = qr.query(sql, new BeanListHandler<User>(User.class));
//4.对结果集集合进行遍历
for (User user : users) {
System.out.println(user.getUname()+” : “+user.getUpassword());
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}

/*
* 根据id查询用户方法
*/
@Test
public void testQueryUserById() {
try {
// 1.获取核心类queryRunner
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
// 2.编写sql语句
String sql = “select * from tbl_user where uid=?”;
//3.为占位符设置值
Object[] params = {2};
// 4.执行查询操作
User user = qr.query(sql, new BeanHandler<User>(User.class), params);
System.out.println(user.getUname() + ” : ” + user.getUpassword());
} catch (SQLException e) {
throw new RuntimeException(e);
}
}

/*
* 根据所有用户的总个数
*/
@Test
public void testQueryCount() {
try {
// 1.获取核心类queryRunner
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
// 2.编写sql语句
String sql = “select count(*) from tbl_user”;
// 4.执行查询操作
Long count = (Long) qr.query(sql, new ScalarHandler());
System.out.println(count);
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
/*
* 查询所有用户方法
*/
@Test
public void testQueryAll1() {
try {
// 1.获取核心类queryRunner
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
// 2.编写sql语句
String sql = “select * from tbl_user”;
// 3.执行查询操作
List<Map<String, Object>> list = qr.query(sql, new MapListHandler());
// 4.对结果集集合进行遍历
for (Map<String, Object> map : list) {
System.out.println(map);
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
/*
* 查询所有用户方法
*/
@Test
public void testQueryAll2() {
try {
// 1.获取核心类queryRunner
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
// 2.编写sql语句
String sql = “select * from tbl_user”;
// 3.执行查询操作
List<Object> list = qr.query(sql, new ColumnListHandler(“uname”));
// 4.对结果集集合进行遍历
for (Object object : list) {
System.out.println(object);
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
运行结果:

 

 

———————
作者:Anarkh_Lee
来源:CSDN
原文:https://blog.csdn.net/Anarkh_Lee/article/details/79886464
版权声明:本文为博主原创文章,转载请附上博文链接!