【mybatis】mybatis中 返回map集合
关于mybatis返回map集合的操作:
1.mapper.xml中写一个查询返回map的sql
<select id="findMap" parameterType="com.sxd.swapping.domain.HuaYangArea" resultType="java.util.HashMap">
select
hy.uid,
hy.area_name
from
hua_yang_area AS hy
<where>
<if test="areaPerson != null">
AND hy.area_person >= #{areaPerson}
</if>
</where>
</select>
2.mapper.java 对应接收,注意,这里并不是直接使用Map<>接收,因为sql查出的不是一条数据,而是多条数据,所以是List<Map<>>接收
/**
* mybatis 查询接收map集合
* @param area
* @return
*/
List<Map<String,String>> findMap(HuaYangArea area);
3.错误写法:
错误的写法就是直接读取List中的Map<>
@Override
public Map<String, String> findMap(HuaYangArea entity) {
List<Map<String,String>> list = huaYangAreaMapper.findMap(entity);
Map<String,String> res = new HashMap<>();
for (Map<String, String> stringStringMap : list) {
System.out.println(stringStringMap.toString());
stringStringMap.forEach((k,v)->{
System.out.println("key:"+k+">>>value:"+v);
res.put(k,v);
});
}
return res;
}
这样查询到的结果是:
我们需要看一哈实际List<Map<>>中到底存储的是什么
结果集中存储是按照{字段名1:字段值1,字段名2:字段值2}
而我们其实期望的是{字段值1:字段值2}
4.正确写法:
所以正确的写法应该是
@Override
public Map<String, String> findMap(HuaYangArea entity) {
List<Map<String,String>> list = huaYangAreaMapper.findMap(entity);
Map<String,String> res = new HashMap<>();
for (Map<String, String> stringStringMap : list) {
System.out.println(stringStringMap.toString()); String uid = null;
String areaName = null; for (Map.Entry<String,String> entry:stringStringMap.entrySet()){
if ("uid".equals(entry.getKey())){
uid = entry.getValue();
}else {
areaName = entry.getValue();
}
} res.put(uid,areaName);
}
return res;
}
返回结果:
【mybatis】mybatis中 返回map集合的更多相关文章
- mybatis xml中返回map 参看aiwanpai
<!-- 指定日期活动被创建次数查询结果数据集--> <resultMap id="countPlayTimesMap" type="HashMap&q ...
- Mybatis中返回Map
在Mybatis中,我们通常会像下边这样用: 返回一个结果 User selectOne(User user); <select id="selectOne" paramet ...
- java中的Map集合
Map接口 Map为一个接口.实现Map接口的类都有一个特点:有键值对,将键映射到值的对象. Map不能包含重复的键,每个键可以映射到最多一个值. Map常见的接口方法有: V put(K key, ...
- 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合
不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素. ...
- ES6中的Map集合(与java里类似)
Set类型可以用来处理列表中的值,但是不适用于处理键值对这样的信息结构.ES6也添加了Map集合来解决类似的问题 一.Map集合 JS的对象(Object),本质上是键值对的集合(Hash结构),但是 ...
- Scala中的Map集合
1. Map集合 1.1 Scala中的Map介绍 Scala中的Map 和Java类似,也是一个散列表,它存储的内容也是键值对(key-value)映射,Scala中不可变的Map是有序的,可变的M ...
- 键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如:"java","txt")作为key, 用个数作为value,放入到map集合中,遍历map集合
package cn.it.zuoye5; import java.io.File;import java.util.HashMap;import java.util.Iterator;import ...
- Java中遍历Map集合的四种方法
在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...
- Mybatis返回map集合
<resultMap id="pieMap" type="HashMap"> <result property="value&quo ...
随机推荐
- hadoop环境搭建编译
安装: JDK1.7+ maven 3.0 or later findbugs 1.3.9 protocolBuffer 2.5.0 cmake 2.6 zlib-devel openssl-deve ...
- swift中闭包的循环引用
首先我们先创造一个循环引用 var nameB:(()->())? override func viewDidLoad() { super.viewDidLoad() let bu = UIBu ...
- C 实现有追求的线程池 后续
引言 -_- 还是老套路开局 很久以前写过一个有追求的线程池 -> C 实现有追求的线程池 探究 讲述的是一种思路, 并且实现了. 可以一用. 最近在详细搞simplec 框架. 准备发布个正式 ...
- C基础 寻找随机函数的G点
引言 随机函数算法应该是计算机史上最重要的十大算法之一吧. 而C中使用的随机函数 #include <stdlib.h> _Check_return_ _ACRTIMP int __cde ...
- java中的逻辑运算符,以及&与&&的区别,|与||的区别
原创,转载请留言联系 逻辑运算符: & 与 false&true=false:true&true=true:false&false=false 必须两个都是true才返 ...
- 自定制Form组件
代码 import re import copy class ValidateError(Exception): def __init__(self,detail): self.detail = de ...
- hdu5782
官方题解不是很详细 首先有一个结论:若A=pa+sa B=pb+sb A.B串循环同构,则可以构造一个可行方案(pa,sb) (sa,pb)中有一个是最长匹配,这个不难用反证法证明. 对于s1,s2串 ...
- AC日记——[LNOI2014]LCA bzoj 3626
3626 思路: 离线操作+树剖: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 100005 #defin ...
- AC日记——严酷的训练 洛谷 P2430
严酷的训练 思路: 背包: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 5005 int n,m,bi[m ...
- 微软企业库5.0 学习之路——第六步、使用Validation模块进行服务器端数据验证
前端时间花了1个多星期的时间写了使用jQuery.Validate进行客户端验证,但是那仅仅是客户端的验证,在开发项目的过程中,客户端的信息永远是不可信的,所以我们还需要在服务器端进行服务器端的验证已 ...