Mybatis select返回值为map时,选取表字段的两列作为key,value
2018-04-01 17:33
4813 查看
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
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
相关文章推荐
- Mybatis select返回值为map时,选取表字段的两列作为key,value
- Mybatis select返回值为map时,选取表字段的两列作为key,value
- mybatis select返回值为map时,选取表字段的两列作为key,value
- Mybatis select返回值为map时,选取表字段的两列作为key,value
- MyBatis查询两个字段,返回Map,一个字段作为key,一个字段作为value的实现
- MyBatis根据Map中key作为字段名,value作为字段值修改数据
- mybatis中使用map类型参数,其中key为列名,value为列值
- 从标准输入中读取两个字符串 name:表示姓名,hobby:爱好;name作为key;hobby作为Value存入Map 然后根据姓名取得Value并打印,再根据name值删除map中的数据再打印ma
- mybatis如何遍历Map的key和value
- 历年世界杯冠军队伍如下,使用map存储这些队伍,使用年份作为key,冠军队伍名称作为value。 完成下面的功能: 1) 输入一个年份,如果当年有世界杯比赛,则输出获奖队伍,如果没有则输出“当年没有举
- 从头认识java-15.7 Map(5)-介绍HashMap的工作原理-Key变了,能不能get出原来的value?(偶尔作为面试题)
- MyBatis循环获取Map中的key和value的方法
- 使用map来进行票数统计工作,循环输入多个人名,作为key存储到map中,对应的value就是该人获得的票数(即重复输入的次数),当重复输入时,需要对相应的数据进行修改。最红输quit结束循环,打印
- MyBatis使用@MapKey注解接收多个查询记录到Map中,以便方便地用get()方法获取字段的值
- mybatis的返回形式(bo---map(key--value))
- 03_MyBatis基本查询,mapper文件的定义,测试代码的编写,resultMap配置返回值,sql片段配置,select标签标签中的内容介绍,配置使用二级缓存,使用别名的数据类型,条件查询ma
- mybatis如何遍历Map的key和value
- 03_MyBatis基本查询,mapper文件的定义,测试代码的编写,resultMap配置返回值,sql片段配置,select标签标签中的内容介绍,配置使用二级缓存,使用别名的数据类型,条件查询ma
- 从头认识java-15.7 Map(5)-介绍HashMap的工作原理-Key变了,能不能get出原来的value?(偶尔作为面试题)
- 对Map类分别按照Key,Value排序,返回值为List对象