关于QueryRunner的查询功能
步骤
1.QueryRunner(DataSource)
2.query(String sql,ResultSetHandler
** ResultSetHandler:结果集处理类(接口)
|BeanHandler:将结果集中第一条记录封装到一个指定的javaBean中
|BeanListHandler:将结果集中每一条记录封装到指定的javaBean中,
| 将这些javaBean在封装到List集合中。
|ScalarHandler:它是用于单个数据,例如:select count(*)from
/***
- 此代码演示了ResultSetHandler的九种结果集实现类
- 重点常用的是
- BeanHandler()//将结果集中第一条记录封装到一个指定的javaBean中
- BeanLiatHandler()//将结果集中每一条记录封装到指定的javaBean中,
- 将这些javaBean在封装到List集合中。
- ScalarHandle()//查询某个数据的个数
- */
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
105public class QueryRunnerDemo {
public static void main(String[] args) throws SQLException {
//ArrayHandlerTest();//将第一条数据保存到Object数组中并返回
//ArrayListHandlerTest();//返回的是集合封装好的一个一个的数组
//BeanHandlerTest();//将结果集中第一条记录封装到一个指定的javaBean中
//BeanLiatHandlerTest();//将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中。
//ColumnListHandlerTest();//将某一列封装成集合并返回
//MapHandlerTest();//将结果封装成map集合并返回
//MapListHandlerTest();
//ScalarHandleTest();
//KeyedHandler();
}
public static void ArrayHandlerTest() throws SQLException {
//将第一条数据保存到Object数组中并返回
//如果SQL语句中没有规定查询第几个数据,就会默认保存了第一条数据(该例中就是cid=1的数据)
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
String sql = "SELECT * from category where cid = ?";
Object[] obj = {3};
Object[] os = qr.query(sql,new ArrayHandler(),obj);
for(Object objects:os){
System.out.println(objects);
}
}
public static void ArrayListHandlerTest() throws SQLException {
//当SQL语句要查询多个或所有的数据
//ArrayListHandler返回值是List<Object[]>类型,返回的是集合封装好的一个一个的数组
//所以输出的时候也要规定好数组的下标
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
String sql = "SELECT * from category";
Object[] obj = {3};
List<Object[]> list = qr.query(sql,new ArrayListHandler());
for(Object[] objects:list){
System.out.println(objects[0]+" "+objects[1]);
}
}
public static void BeanHandlerTest() throws SQLException {
//BeanHandler类将结果集中第一条记录封装到一个指定的javaBean中
//用来查询一个值,并且将该值封装成一个对象并返回
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
String sql = "SELECT * from category";
Category c = qr.query(sql,new BeanHandler<Category>(Category.class));//BeanHandler类的使用
System.out.println(c);//此处就只有第一条数据
}
public static void BeanLiatHandlerTest() throws SQLException {
//BeanListHandler类将所有结果封装到指定的javaBean中
//并将这些javabean封装成集合并返回
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
String sql = "SELECT * from category";
List<Category> c = qr.query(sql,new BeanListHandler<Category>(Category.class));
for(Category category : c){
System.out.println(category);
}
}
public static void ColumnListHandlerTest() throws SQLException {
//ColumnListHandler类将指定的某一列的数据封装到集合中并返回
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
String sql = "SELECT * from category";
List list = qr.query(sql,new ColumnListHandler<>("cname"));
System.out.println(list);
}
public static void MapHandlerTest() throws SQLException {
//返回MAP集合
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
String sql = "SELECT * from category";
Map<String,Object> m = qr.query(sql,new MapHandler());
System.out.println(m);
}
public static void MapListHandlerTest() throws SQLException {
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
String sql = "SELECT * from category";
List<Map<String,Object>> m = qr.query(sql,new MapListHandler());
System.out.println(m);
}
public static void ScalarHandleTest() throws SQLException {
//查询某个数据的个数
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
String sql = "SELECT count(*) from category";
//此处的返回值是long,因为数据库的数据太多,这里默认是Long而不是Integer
Long count = qr.query(sql,new ScalarHandler<Long>());
System.out.println(count);
}
public static void KeyedHandler() throws SQLException {
//查询的每一行数据存储到map集合中,将多个map集合再存储到map中
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
String sql = "SELECT * FROM category";
Map<Object, Map<String, Object>> map = qr.query(sql, new KeyedHandler<>());
//遍历map(两层)
for(Object obj : map.keySet()) {
for(String key : map.get(obj).keySet()) {
System.out.print(key+"\t"+map.get(obj).get(key)+"\t");
}
System.out.println();
}
}
}