说明 : 结果集处理类, 将从数据库中获取的数据进行封装处理, 从Dao层返回数据给 Service 层.
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 表操作。 |
ResultSetHandler 在DBUtils 框架中提供九个默认 实现类,直接使用九个默认实现类,可以完成常规操作,而不需要自定义结果集封装
1) ArrayHandler 和 ArrayListHandler 将数据表的每行记录保存Object[] 中
2) BeanHandler 和 BeanListHandler 将数据表每行记录 保存JavaBean对象中
* 封装javabean属性时,必须保证数据表列名与 javabean属性名一致,否则无法封装
3) MapHandler和 MapListHandler 将结果每行记录保存到一个Map集合,key是列名,value是值
4) ColumnListHandler 查询结果集中指定一列数据
5) KeyedHandler(name) 结果集每行数据封装map,再将map存入另一个map 作为value,指定一列作为key
6) ScalarHandler 进行单值查询 select count(*) from account;
BeanHandler
@Test
public void test_BeanHandler() throws SQLException {
// 1. 创建QueryRunner对象, 同时将 `数据库` 对象传入
QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource());
// 2. 执行 query 方法
String sql = "select * from user where id=?;";
User user = queryRunner.query(sql, new BeanHandler<User>(User.class), 3);
System.out.println(user);
}
BeanListHandler
@Test
public void test_BeanListHandler() throws SQLException {
// 1. 创建QueryRunner对象, 同时将 `数据库` 对象传入
QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource());
// 2. 执行 query 方法
String sql = "select * from user;";
List<User> list = queryRunner.query(sql, new BeanListHandler<User>(User.class));
for (User user : list) {
System.out.println(user);
}
}
ScalarHandler
@Test
public void test_scalarHandler() throws SQLException {
// 1. 创建QueryRunner对象, 同时将 `数据库` 对象传入
QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource());
// 2. 执行 query 方法
String sql = "select count(*) from user;";
Long result = queryRunner.query(sql, new ScalarHandler<Long>());
System.out.println(result);
}
MapHandler
@Test
public void test_MapHandler() throws SQLException {
// 1. 创建QueryRunner对象, 同时将 `数据库` 对象传入
QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource());
String sql = "select * from user;";
Map<String, Object> map = queryRunner.query(sql, new MapHandler());
System.out.println(map);
}
MapListHandler
@Test
public void test_MapListHandler() throws SQLException {
// 1. 创建QueryRunner对象, 同时将 `数据库` 对象传入
QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource());
String sql = "select * from user;";
List<Map<String, Object>> list = queryRunner.query(sql, new MapListHandler());
for (Map<String, Object> map : list) {
System.out.println(map);
}
}
ArrayHandler
@Test
public void test_ArrayHandler() throws SQLException {
// 1. 创建QueryRunner对象, 同时将 `数据库` 对象传入
QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource());
// 2. 执行 query 操作
String sql = "select * from user;";
Object[] arr = queryRunner.query(sql, new ArrayHandler());
System.out.println(Arrays.toString(arr));
}
ArrayListHandler
@Test
public void test_ArrayListHandler() throws SQLException {
// 1. 创建QueryRunner对象, 同时将 `数据库` 对象传入
QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource());
// 2. 执行 query 操作
String sql = "select * from user;";
List<Object[]> list = queryRunner.query(sql, new ArrayListHandler());
for (Object[] arr : list) {
System.out.println(Arrays.toString(arr));
}
}
ColumnListHandler
@Test
public void test_ColumnListHandler() throws SQLException {
// 1. 创建QueryRunner对象, 同时将 `数据库` 对象传入
QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource());
// 2. 执行 query 操作
String sql = "select * from user;";
List<String> list = queryRunner.query(sql, new ColumnListHandler<String>("username"));
System.out.println(list);
}
KeyedHandler
@Test
public void test_KeyedHandler() throws SQLException {
// 1. 创建QueryRunner对象, 同时将 `数据库` 对象传入
QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource());
// 2. 执行 query 操作
String sql = "select * from user;";
Map<User, Map<String, Object>> map = queryRunner.query(sql, new KeyedHandler<User>("username"));
for (Entry<User, Map<String, Object>> entry : map.entrySet()) {
System.out.println(entry);
}
}