From: https://blog.csdn.net/Gaomb_1990/article/details/80638177

一、案例

当要查询的结果是一个Map的时候,这里分为两种情况:

①返回单条记录

<select id="getUserByIdReturnMap" resultType="map">
    select id, loginId, userName, role, note from t_user where id=#{id}
</select>

注意:此时的resultType写的是map

控制台打印结果如下:

2017-08-06 22:57:38,473 [main] [com.queen.mybatis.mapper.UserMapper.getUserByIdReturnMap]-[DEBUG] ==>  Preparing: select id, loginId, userName, role, note from t_user where id=?
2017-08-06 22:57:38,538 [main] [com.queen.mybatis.mapper.UserMapper.getUserByIdReturnMap]-[DEBUG] ==> Parameters: 1(Integer)
2017-08-06 22:57:38,581 [main] [com.queen.mybatis.mapper.UserMapper.getUserByIdReturnMap]-[DEBUG] <==      Total: 1
{id=1, loginId=乌索普, role=海贼王副把手, userName=奎恩, note=专门负责提鞋的。。。}

从控制台可以看到,返回了一条数据,key是列名,值就是对应的值

②返回多条记录

要将每条记录都封装成Map,注意:这里的返回值resultType是User类型,而不是一个Map

<select id="getAllUsersReturnMap" resultType="com.queen.mybatis.bean.User">
    select id, loginId, userName, role, note from t_user
</select>

@MapKey(“id”)表示:告诉MyBatis封装这个Map的时候使用哪个属性作为map的key,修改Java文件

/**
* 多条记录封装成一个Map,Map<Integer,User>:键是这条记录的主键,值是这条记录封装后的JavaBean
* @param id
* @return
*/
@MapKey("id")
public Map<Integer,User> getAllUsersReturnMap();

控制台打印结果如下:

2017-08-06 23:11:20,001 [main] [com.queen.mybatis.mapper.UserMapper.getAllUsersReturnMap]-[DEBUG] ==>  Preparing: select id, loginId, userName, role, note from t_user
2017-08-06 23:11:20,054 [main] [com.queen.mybatis.mapper.UserMapper.getAllUsersReturnMap]-[DEBUG] ==> Parameters:
2017-08-06 23:11:20,102 [main] [com.queen.mybatis.mapper.UserMapper.getAllUsersReturnMap]-[DEBUG] <==      Total: 3
{1=User [id=1, loginId=queen, userName=奎恩, role=海贼王副把手, note=专门负责提鞋的。。。], 2=User [id=2, loginId=king, userName=金狮子, role=海贼王前大海贼把手, note=磁性果实能力], 3=User [id=3, loginId=Lucy, userName=路西, role=路飞假扮选手, note=打败多弗朗明哥。。。]}

从上述打印结果可以直观的看到,返回多条记录时,key是ID主键,value是一个User的JavaBean

为了验证上述@MapKey注解的作用,我们修改一下@MapKey(“userName”)

@MapKey("userName") public Map<Integer,User> getAllUsersReturnMap();

控制台打印结果如下:

2017-08-06 23:19:41,081 [main] [com.queen.mybatis.mapper.UserMapper.getAllUsersReturnMap]-[DEBUG] ==>  Preparing: select id, loginId, userName, role, note from t_user
2017-08-06 23:19:41,136 [main] [com.queen.mybatis.mapper.UserMapper.getAllUsersReturnMap]-[DEBUG] ==> Parameters:
2017-08-06 23:19:41,191 [main] [com.queen.mybatis.mapper.UserMapper.getAllUsersReturnMap]-[DEBUG] <==      Total: 3
{金狮子=User [id=2, loginId=king, userName=金狮子, role=海贼王前大海贼把手, note=磁性果实能力], 路西=User [id=3, loginId=Lucy, userName=路西, role=路飞假扮选手, note=打败多弗朗明哥。。。], 奎恩=User [id=1, loginId=queen, userName=奎恩, role=海贼王副把手, note=专门负责提鞋的。。。]}

老司机学习MyBatis之如何通过select返回Map相关推荐

  1. 老司机学习MyBatis之如何处理参数(单个参数或者多个参数)

    一.前言 Mybatis在使用Mapper接口进行编程时,底层采用了动态代理机制,表面上是调用的Mapper接口,而实际上是通过动态代理调用的SqlSession的对应方法,其最终会获得一个代理了Ma ...

  2. 老司机学习MyBatis之mappers如何配置映射注册

    一.前言 定义SQL映射语句,首先我们要告诉MyBatis去哪里找到这些语句,Java在自动查找这方面没有提供一个很好的方法,所以最佳方式是告诉MyBatis到哪里去查找映射文件,你可以使用相对路径的 ...

  3. 老司机学习MyBatis之逆向工程MGB的简单使用

    一.前言 MyBatis Generator简称MBG,是一个专门为MyBatis框架使用者定制的代码生成器,可以快速的根据表生成对应的映射文件,接口,以及bean类.支持基本的增删改查,以及QBC风 ...

  4. AI向程序员老司机学习:从眼神的变化中寻找bug

    晓查 发自 凹非寺  量子位 报道 | 公众号 QbitAI 用AI找bug这件事,有人尝试过,结果翻车了.美国网站Yelp的程序员们试图让AI帮自己找bug,岂料AI却删库跑路,最后只能用回滚的办法 ...

  5. mybatis支持驼峰自动转换sql吗_mybatis-plus返回map自动转驼峰配置操作

    mybatis-plus返回map自动转驼峰配置object-wrapper-factory不生效问题解决:配置map-underscore-to-camel-case: true不生效问题解决 很多 ...

  6. 我学习 Java 的历程和体会(写给新手看,欢迎老司机批评和建议,持续更新中)

    我学习 Java 的历程和体会(写给新手看,欢迎老司机批评和建议,持续更新中) 最初写这篇文章的时候,是在今年的 9 月中旬.今天,我想再写写这将近两个多月以来的感受. 在今年的 10 月我来到北京求 ...

  7. autocad不能画图_设计院老司机谈CAD:学习AutoCAD掌握方法技巧更重要

    设计院老司机谈AutoCAD制图,真的是一个不容易的过程,说实话对自己还是很佩服的,当然学习AutoCAD不仅仅有勇气就行,掌握方法技巧更重要. 总是一句话,难就对了!哈哈哈是不是有点扎心~ 事实上就 ...

  8. 【AI学院】新手如何学CV?老司机带学有三书籍《深度学习之图像识别》,赠书8本...

    为什么以及怎么学计算机视觉? 作为一个普通的程序员,如果能转型成为一个计算机视觉算法工程师,带来的不仅是高薪,还有从劳动密集型工种转化为智力密集型工种带来的"阶级跃迁".因为相对于 ...

  9. 【AI学院】老司机手把手带学言有三的经典书籍《深度学习之图像识别》,需要的赶紧上车吧...

    为什么以及怎么学计算机视觉? 作为一个普通的程序员,如果能转型成为一个计算机视觉算法工程师,带来的不仅是高薪,还有从劳动密集型工种转化为智力密集型工种带来的"阶级跃迁".因为相对于 ...

最新文章

  1. 中国自动驾驶最大单轮融资诞生,丰田4亿美元领投小马智行
  2. cf英文名字格式好看的_cf英文名字大全_Michael、
  3. JAVA从下载到浏览器运行完整篇,写给lewis
  4. lazada新手开店之后,怎样选择正确类目来发布产品?
  5. 按钮 每一行_word跨页表格如何重复设置表头?单击“重复标题行”按钮来设置多页表格重复标题行显示。...
  6. java中广告维护轮播图怎么做_Banner广告轮播图
  7. java 坦克大战设计论文,java坦克大战毕业设计论文
  8. html 游戏 消消乐,html5叠房子消消乐小游戏代码
  9. 盈利稳定增长:盈利收益率法
  10. sklearn svm 调参_sklearn调参(验证曲线,可视化不同参数下交叉验证得分)
  11. 【数据压缩】作业1:分析浊音清音爆破音的时域和频域特性以及RGB熵的计算
  12. 百度广告屏蔽及游戏推广屏蔽
  13. java设置pdf不可编辑_Java动态生成pdf文件(使用itext编辑pdf)
  14. 高职单招面试流程及技巧有哪些
  15. [ctf.show.reverse] 来一个派森,好好学习天天向上
  16. 数据结构C语言版(答案)
  17. C++ Virtual详解
  18. 惠普软件技术总监赵大平:IT与业务的结合
  19. mysql中触发器有什么作用_数据库触发器有什么作用?
  20. PVB分散体的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告

热门文章

  1. arcgis镜像图形工具,ArcGis图形编辑
  2. java list用法_Java List 用法详解及实例分析
  3. leetcode1343. 大小为 K 且平均值大于等于阈值的子数组数目(队列)
  4. linux系统部署war包,查看tomcat日志
  5. @ResponseBody//该注解会将返回值转为json格式并放到响应体中返回到前台
  6. 微服务架构下的身份认证
  7. webapi put 404
  8. iOS UItextView监听输入特定字符跳转页面选择选项返回
  9. JSP作业1--5!
  10. Nginx_查看并发连接数