dbutils返回键值对

By | 2015年4月13日

dbutils好像没有直接返回键值对的形式的handler,因为在数据库保存的是键值对的配置,如下图

sqlitekeyvalue

所以需要直接返回一个以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"));