ResultSetHandler接口的实现类
@Test
public void test() {
//1.ArrayHandler
//适合取1条记录,把该条记录的每列值封装到一个数组中Object[]
QueryRunner qr = new QueryRunner(DBC3P0Utils.getDataSource());
String sql = "SELECT * FROM account WHERE id = ?";
try {
Object[] objs = qr.query(sql, new ArrayHandler(), 2);
for (Object obj : objs) {
System.out.println(obj.getClass() + "=" + obj);
}
//结果:
//class java.lang.Integer=2
//class java.lang.String=2
//class java.lang.Double=9.88
} catch (SQLException e) {
e.printStackTrace();
}
}
@Test
public void test2() {
//ArrayListHandler
//适合取多条记录,把每条记录的每列值封装到一个数组中Object[],把数组封装到一个List中
QueryRunner qr = new QueryRunner(DBC3P0Utils.getDataSource());
String sql = "SELECT * FROM account";
try {
List<Object[]> alist = qr.query(sql, new ArrayListHandler());
//每一行数据
for (Object[] objects : alist) {
for (Object object : objects) {
System.out.println(object);
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
@Test
public void test3() {
//ColumnListHandler
//获取某一列的数据,封装到List中
QueryRunner qr = new QueryRunner(DBC3P0Utils.getDataSource());
String sql = "SELECT * FROM account";
try {
List<Object> list = qr.query(sql, new ColumnListHandler("name"));
for (Object o : list) {
//List<Object> list = qr.query(sql, new ColumnListHandler(1));
//System.out.println(o);//id
System.out.println(o);//name
}
} catch (SQLException e) {
e.printStackTrace();
}
}
@Test
public void test4() {
//KeyedHandler
//取多条记录,每一条记录封装到一个Map中,再把这个Map封装到另外一个Map中,key为指定的字段值
//默认第一个为KEY
QueryRunner qr = new QueryRunner(DBC3P0Utils.getDataSource());
String sql = "SELECT * FROM account";
try {
Map<Object, Map<String, Object>> data = qr.query(sql, new KeyedHandler());
//可以指定列作为key
//Map<Object, Map<String, Object>> data = qr.query(sql, new KeyedHandler("name"));
for (Entry<Object, Map<String, Object>> entry : data.entrySet()) {
//获取key
//默认为第一列
System.out.println(entry.getKey());
//获取value
for (Entry<String, Object> rowData : entry.getValue().entrySet()) {
System.out.println(rowData.getKey() + ":" + rowData.getValue());
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
@Test
public void test5() {
//MapHandler
//适合取1条记录,把当前记录的列名和列值放到一个Map中
QueryRunner qr = new QueryRunner(DBC3P0Utils.getDataSource());
String sql = "SELECT * FROM account WHERE id = ?";
try {
Map<String, Object> query = qr.query(sql, new MapHandler(), 2);
for (Entry<String, Object> entry : query.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
} catch (SQLException e) {
e.printStackTrace();
}
}
@Test
public void test6() {
//MapListHandler
//适合取多条记录,把每条记录封装到一个Map中,再把Map封装到List中
QueryRunner qr = new QueryRunner(DBC3P0Utils.getDataSource());
String sql = "SELECT * FROM account";
try {
List<Map<String, Object>> query = qr.query(sql, new MapListHandler());
for (Map<String, Object> stringObjectMap : query) {
for (Entry<String, Object> entry : stringObjectMap.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
@Test
public void test7() {
//ScalarHandler
//适合取单行单列数据
QueryRunner qr = new QueryRunner(DBC3P0Utils.getDataSource());
String sql = "SELECT COUNT(*) FROM account";
try {
Object o = qr.query(sql, new ScalarHandler());
System.out.println(o.getClass());//java.lang.Long
System.out.println("共有" + o + "条数据");
} catch (SQLException e) {
e.printStackTrace();
}
}
@Test
public void test8() {
//BeanHandler
//适合取单行多列数据
QueryRunner qr = new QueryRunner(DBC3P0Utils.getDataSource());
String sql = "SELECT * FROM account WHERE id = ?";
try {
Account account = qr.query(sql, new BeanHandler<Account>(Account.class), 2);
System.out.println(account);
} catch (SQLException e) {
e.printStackTrace();
}
}
@Test
public void test9() {
//BeanListHandler
//适合多行多列
QueryRunner qr = new QueryRunner(DBC3P0Utils.getDataSource());
String sql = "SELECT * FROM account";
try {
List<Account> accounts = qr.query(sql, new BeanListHandler<Account>(Account.class));
for (Account account : accounts) {
System.out.println(account);
}
} catch (SQLException e) {
e.printStackTrace();
}
}