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

猜你喜欢

转载自blog.csdn.net/qq_38676810/article/details/79779239