dbutils好像没有直接返回键值对的形式的handler,因为在数据库保存的是键值对的配置,如下图
所以需要直接返回一个以key为键名,以value为值的Map类型数据,具体实现如下:
1、自定义一个handler
package com.renyiwei.handlers; import java.sql.ResultSet; import java.sql.SQLException; import java.util.HashMap; import java.util.Map; import org.apache.commons.dbutils.ResultSetHandler; public class KeyValueHandler implements ResultSetHandler<Map<String, String>> { private String key; private String value; public KeyValueHandler() { this.key = "key"; this.value = "value"; } public KeyValueHandler(String key, String value) { this.key = key; this.value = value; } @Override public Map<String, String> handle(ResultSet rs) throws SQLException { Map<String, String> keyValueMap = new HashMap<String, String>(); while (rs.next()) { // 将每一列的key作为返回值map的键名,value作为返回值map的值 keyValueMap.put(rs.getString(key), rs.getString(value)); } return keyValueMap; } }
2、在利用QueryRunner查询时传入KeyValueHandler对象
String sql = "select key,value from global"; return qr.query(sql, new KeyValueHandler("key", "value"));