MapHandler实体类:返回结果集中的第一行数据
public static void testMapHandler() throws SQLException {
QueryRunner runner = new QueryRunner(getDataSoure());
//第一个参数是sql语句,第二参数是结果集,第三个参数是sql语句的?的值
Map<String ,Object> user = runner.query("select * from t_user where id>?", new MapHandler(), 1);
System.out.println(user);
}
运行结果:

因为Map集合嘛,所以我直接输出了
- (解释一下代码)把数据库中id大于1的第一行数据返回到Map中输出
MapListHandler实体类:返回结果集中的多行数据
public static void testMapListHandler() throws SQLException {
QueryRunner runner = new QueryRunner(getDataSoure());
//第一个参数是sql语句,第二参数是结果集,第三个参数是sql语句的?的值
List<Map<String ,Object>> users = runner.query("select * from t_user where id>?", new MapListHandler(), 1);
System.out.println(users);
}
运行结果:

- (解释一下代码)把数据库中id大于1的所有数据返回到Map中存储在List数组中输出,一个Map的值相当于一个用户
KeyedHandler实体类:把所有数据封装到Map集合中
public static void testKeyedHandler() throws SQLException {
QueryRunner runner = new QueryRunner(getDataSoure());
//第一个参数是sql语句,第二参数是结果集,第三个参数是sql语句的?的值
Map<String,Map<String ,Object>> users = runner.query("select * from t_user where id>?", new KeyedHandler<String >("name"), 1);
System.out.println(users);
}
运行结果:

- KeyedHandler("name")这个是根据数据库中name的字段当做最外层Map的key值
- (解释一下代码)把数据库中id大于1的所有数据返回到Map中存储在另外一个Map中,打个比方,{ls=a,ww=b,zl=c},其中的a就是另外一个Map{id=2,name=ls}.就是一个Map嵌套一个Map
ColumnListHandler实体类:把结果集中的某一列保存到List中
public static void testColumnListHandler() throws SQLException {
QueryRunner runner = new QueryRunner(getDataSoure());
//第一个参数是sql语句,第二参数是结果集,第三个参数是sql语句的?的值
List<String> names = runner.query("select * from t_user where id>?", new ColumnListHandler<String>("name"), 1);
System.out.println(names);
}
运行结果:

- 这个可以通过修改sql语句也可以实现该功能
ScalarHandler实体类:获取单值
public static void testScalarHandler() throws SQLException {
QueryRunner runner = new QueryRunner(getDataSoure());
//第一个参数是sql语句,第二参数是结果集,第三个参数是sql语句的?的值
Integer ruselt = runner.query("select count(*) from t_user where id>?", new ScalarHandler<Integer>(), 1);
System.out.println(ruselt);
}
运行结果

- (代码解释一下)把数据库中id大于1的个数输出
总结:ResultSetHandler接口的十个实现类的用法;废话不多说,直接放图(图来自于DT课堂颜群老师)


- 如果有错误,欢迎指正!