Mybatis select返回值为map时,选取表字段的两列作为key,value

1、需求:Mybatis查询结果集为Map时,其中Map中的key为列名,而key对应的value是该列对应的列值。项目中的需求为字段A对应的value作为Map的Key,字段B对应的value作为key对应的value。

2、实现思想:重写ResultHandler接口,,然后用SqlSession 的select方法,将xml里面的映射文件的返回值配置成 HashMap 就可以了。

3、代码实现:

(1)xml配置:

   <resultMap id="ipNumResult" type="java.util.HashMap">
        <result property="key" column="requestUrl"/>
        <result property="value" column="num"/>
    </resultMap>

   <select id="getAccessUrlNum" resultMap="ipNumResult">
       select a.request_url  requestUrl, count(1)  num  from access_statistics a GROUP BY a.request_url;
  </select>

 (2)实现接口

public class MapResultHandler implements ResultHandler {
    @SuppressWarnings("rawtypes")
    private final Map mappedResults = new HashMap();

    @SuppressWarnings("unchecked")
    @Override
    public void handleResult(ResultContext context) {
        @SuppressWarnings("rawtypes")
        Map map = (Map)context.getResultObject();
        mappedResults.put(map.get("key"), map.get("value"));  // xml 配置里面的property的值,对应的列
    }
    public Map getMappedResults() {
        return mappedResults;
    }

}

(3)调用类

public <K,V> Map<K,V> queryForMap(String statement, Object params) {
    MapResultHandler handler = new MapResultHandler();
    sqlSession.select(statement, params, handler);
    return handler.getMappedResults();
}

参考资料的相关链接:http://www.cnblogs.com/GoQC/p/6216967.ht

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值