KeyedHandler
在使用DBUtils工具操作数据库时,KeyedHandler类用于将结果集中的每一行数据都封装到一个Map里,然后再根据指定的key把每个Map再存放到一个Map里,接下来通过一个案例演示KeyedHandler类的使用方法,如例1所示。
例1 ResultSetTest9.java
1 package cn.itcast.jdbc.example.dao;
2 import java.sql.SQLException;
3 import java.util.Map;
4 import javax.sql.DataSource;
5 import org.apache.commons.dbutils.QueryRunner;
6 import org.apache.commons.dbutils.handlers.KeyedHandler;
7 import com.mchange.v2.c3p0.ComboPooledDataSource;
8
9 public class ResultSetTest9 {
10 public static DataSource ds = null;
11 // 初始化C3P0数据源
12 static {
13 // 使用c3p0-config.xml配置文件中的named-config节点中name属性的值
14 ComboPooledDataSource cpds = new ComboPooledDataSource();
15 ds = cpds;
16 }
17 public static void testKeyedHandler() throws SQLException {
18 String sql = "select id, name, password from user";
19 QueryRunner qr = new QueryRunner(ds);
20 Map<Object, Map<String, Object>> map = qr.query(
21 sql, new KeyedHandler<Object>("id"));
22 Map uMap = (Map) map.get( new Integer(1));
23 String uName = (String) uMap.get("name") ;
24 String uPassword = (String) uMap.get("password");
25 System.out.println(uName+":"+uPassword);
26 }
27 public static void main(String[] args) throws SQLException {
28 testKeyedHandler();
29 }
30 }
运行ResultSetTest9类,输出结果如图1所示。
图1 运行结果
在例1中,KeyedHandler类将结果集中的每一行数据都封装到一个Map里,然后再根据指定的key(id)把每个Map再存放到一个Map里。从运行结果可以看出,KeyedHandler类成功的输出结果集中一行数据的name和password字段的值。