关于mybatis返回map集合的操作:

1.mapper.xml中写一个查询返回map的sql

  1. <select id="findMap" parameterType="com.sxd.swapping.domain.HuaYangArea" resultType="java.util.HashMap">
  2. select
  3. hy.uid,
  4. hy.area_name
  5. from
  6. hua_yang_area AS hy
  7. <where>
  8. <if test="areaPerson != null">
  9. AND hy.area_person &gt;= #{areaPerson}
  10. </if>
  11. </where>
  12. </select>

2.mapper.java 对应接收,注意,这里并不是直接使用Map<>接收,因为sql查出的不是一条数据,而是多条数据,所以是List<Map<>>接收

  1. /**
  2. * mybatis 查询接收map集合
  3. * @param area
  4. * @return
  5. */
  6. List<Map<String,String>> findMap(HuaYangArea area);

3.错误写法:

错误的写法就是直接读取List中的Map<>

  1. @Override
  2. public Map<String, String> findMap(HuaYangArea entity) {
  3. List<Map<String,String>> list = huaYangAreaMapper.findMap(entity);
  4. Map<String,String> res = new HashMap<>();
  5. for (Map<String, String> stringStringMap : list) {
  6. System.out.println(stringStringMap.toString());
  7. stringStringMap.forEach((k,v)->{
  8. System.out.println("key:"+k+">>>value:"+v);
  9. res.put(k,v);
  10. });
  11. }
  12. return res;
  13. }

这样查询到的结果是:

我们需要看一哈实际List<Map<>>中到底存储的是什么

结果集中存储是按照{字段名1:字段值1,字段名2:字段值2}

而我们其实期望的是{字段值1:字段值2}

4.正确写法:

所以正确的写法应该是

  1. @Override
  2. public Map<String, String> findMap(HuaYangArea entity) {
  3. List<Map<String,String>> list = huaYangAreaMapper.findMap(entity);
  4. Map<String,String> res = new HashMap<>();
  5. for (Map<String, String> stringStringMap : list) {
  6. System.out.println(stringStringMap.toString());
  7.  
  8. String uid = null;
  9. String areaName = null;
  10.  
  11. for (Map.Entry<String,String> entry:stringStringMap.entrySet()){
  12. if ("uid".equals(entry.getKey())){
  13. uid = entry.getValue();
  14. }else {
  15. areaName = entry.getValue();
  16. }
  17. }
  18.  
  19. res.put(uid,areaName);
  20. }
  21. return res;
  22. }

返回结果:

【mybatis】mybatis中 返回map集合的更多相关文章

  1. mybatis xml中返回map 参看aiwanpai

    <!-- 指定日期活动被创建次数查询结果数据集--> <resultMap id="countPlayTimesMap" type="HashMap&q ...

  2. Mybatis中返回Map

    在Mybatis中,我们通常会像下边这样用: 返回一个结果 User selectOne(User user); <select id="selectOne" paramet ...

  3. java中的Map集合

    Map接口 Map为一个接口.实现Map接口的类都有一个特点:有键值对,将键映射到值的对象. Map不能包含重复的键,每个键可以映射到最多一个值. Map常见的接口方法有: V  put(K key, ...

  4. 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合

    不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素. ...

  5. ES6中的Map集合(与java里类似)

    Set类型可以用来处理列表中的值,但是不适用于处理键值对这样的信息结构.ES6也添加了Map集合来解决类似的问题 一.Map集合 JS的对象(Object),本质上是键值对的集合(Hash结构),但是 ...

  6. Scala中的Map集合

    1. Map集合 1.1 Scala中的Map介绍 Scala中的Map 和Java类似,也是一个散列表,它存储的内容也是键值对(key-value)映射,Scala中不可变的Map是有序的,可变的M ...

  7. 键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如:"java","txt")作为key, 用个数作为value,放入到map集合中,遍历map集合

    package cn.it.zuoye5; import java.io.File;import java.util.HashMap;import java.util.Iterator;import ...

  8. Java中遍历Map集合的四种方法

    在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...

  9. Mybatis返回map集合

    <resultMap id="pieMap" type="HashMap"> <result property="value&quo ...

随机推荐

  1. ASP.NET MVC 文件上传

    如果想要用HTML表单实作文件上传的功能,那么必须在输出的<form>表单标签加上一个enctype属性,且内容必须设定为multipart/form-data,要通过Html.Begin ...

  2. 重写Alert

    var isIE = navigator.appName.indexOf("Internet Explorer") != -1;var oldAlert = window.aler ...

  3. cacti (可以利用yum安装cacti的配置)

    [root@localhost ~]# yum install -y epel-release[root@localhost ~]# [root@localhost ~]# yum install - ...

  4. java中的逻辑运算符,以及&与&&的区别,|与||的区别

    原创,转载请留言联系 逻辑运算符: & 与 false&true=false:true&true=true:false&false=false 必须两个都是true才返 ...

  5. node-session

    session cookie 虽然很方便,但是使用 cookie 有一个很大的弊端,cookie 中的所有数据在客户端就可以被修改,数据非常容易被伪造,那么一些重要的数据就不能存放在 cookie 中 ...

  6. Python使用with结构打开多个文件

    同时打开三个文件,文件行数一样,要求实现每个文件依次读取一行,然后输出,我们先来看比较容易想到的写法: with open(filename1, 'rb') as f1: with open(file ...

  7. LocalStorage、SessionStorage使用详解

    https://blog.csdn.net/zhongzh86/article/details/55504381

  8. 【JBPM4】流程分支fork - join

    流程分支.聚合.流程每个分支节点都全部处理完成后,聚合到下一个节点. JPDL <?xml version="1.0" encoding="UTF-8"? ...

  9. 排序算法总结(C语言版)

    排序算法总结(C语言版) 1.    插入排序 1.1     直接插入排序 1.2     Shell排序 2.    交换排序 2.1     冒泡排序 2.2     快速排序 3.    选择 ...

  10. OpenStack 安装数据库和rabbitmq消息队列 (三)

    一)安装配置数据库 1.1.安装包 # yum install mariadb mariadb-server python2-PyMySQL -y 1.2.配置数据库 # vim /etc/my.cn ...