老司机学习MyBatis之如何通过select返回Map

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=专门负责提鞋的。。。]}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/402513.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据之Yarn——Capacity调度器概念以及配置

试想一下&#xff0c;你现在所在的公司有一个hadoop的集群。但是A项目组经常做一些定时的BI报表&#xff0c;B项目组则经常使用一些软件做一些临时需求。那么他们肯定会遇到同时提交任务的场景&#xff0c;这个时候到底如何分配资源满足这两个任务呢&#xff1f;是先执行A的任务…

C#基于Socket的简单聊天室实践

序&#xff1a;实现一个基于Socket的简易的聊天室&#xff0c;实现的思路如下&#xff1a; 程序的结构&#xff1a;多个客户端一个服务端&#xff0c;客户端都是向服务端发送消息&#xff0c;然后服务端转发给所有的客户端&#xff0c;这样形成一个简单的聊天室功能。 实现的细…

C/C++经典面试题

面试题1&#xff1a;变量的声明和定义有什么区别 为变量分配地址和存储空间的称为定义&#xff0c;不分配地址的称为声明。一个变量可以在多个地方声明&#xff0c;但只能在一个地方定义。加入extern修饰的是变量的声明&#xff0c;说明此变量将在文件以外或在文件后面部分定义…

Java跳出多重循环

From: https://www.cnblogs.com/fastfn/p/9777067.html 场景&#xff1a;很多的时候需要做到跳出多重循环&#xff0c;而在Java中虽然后goto关键字&#xff0c;但是是保留字&#xff0c;并没有启用。而在处理分支结构的if...else,switch...case,好像都达不到想要的效果。 作为…

CCF 节日

问题描述有一类节日的日期并不是固定的&#xff0c;而是以“a月的第b个星期c”的形式定下来的&#xff0c;比如说母亲节就定为每年的五月的第二个星期日。现在&#xff0c;给你a&#xff0c;b&#xff0c;c和y1, y2(1850 ≤ y1, y2 ≤ 2050)&#xff0c;希望你输出从公元y1年到…

回文数算法

1、回文数&#xff1a;一种数字&#xff0c;如&#xff1a;12321, 这个数字正读是12321&#xff0c;倒读也是12321&#xff0c;即&#xff1a;将这个数的数字按相反的顺序重新排列后&#xff0c;所得到的数和原来的数一样。回文数判别算法&#xff08;java实现&#xff09;impo…

深入了解scanf() getchar()和gets()等函数之间的区别

----------------------------------------------------| 问题描述一&#xff1a;&#xff08;分析scanf()和getchar()读取字符&#xff09; |-------------------------------------------------- scanf(), getchar()等都是标准输入函数&#xff0c;一般人都会觉得这几个函数…

java基础集合简介Map(三)下

From: https://www.cnblogs.com/douyu2580860/p/8358768.html --Map接口简介 今天来看一看map集合&#xff0c;map映射接口&#xff0c;用于存放键值对&#xff0c;<key,value>&#xff0c;通过key来查找value,顾名思义key不能为空&#xff0c;唯一且不重复&#xff0c;不…

横向量与矩阵的乘积

设Tj(Tj1, Tj2, ..., Tjn)为横向量。而iδ是Tj中第δ位不为零的元素&#xff0c;1≤δ≤z。 令hjTjH, 则hj是TH的第j行。且有 hjΣ(ki1, i2, ..., iz)Tj,kHk. 从上式看&#xff0c; &#xff08;1&#xff09;可以将横向量的第k位视为右边矩阵第k行是否叠加的控制信号。 &#…

MySQL日期时间函数大全(转)

DAYOFWEEK(date) 返回日期date是星期几(1星期天,2星期一,……7星期六,ODBC标准)mysql> select DAYOFWEEK(1998-02-03);   -> 3 WEEKDAY(date)  返回日期date是星期几(0星期一,1星期二,……6 星期天)。 mysql> select WEEKDAY(1997-10-04 22:23:00);   -> 5 my…

C语言常见错误

对于刚学编程&#xff0c;刚接触C的新手来说&#xff0c;编译运行报错是最头疼的一件事&#xff0c;爆出一堆英文&#xff0c;英语差一点的又不知道什么意思&#xff0c;所以也不知道如何去改&#xff0c;在此&#xff0c;我给大家传一份常见错误中英文对照表及简单解释&#x…

screen 断开 screen -r 不能进入断开的会话

From: https://www.wrox.org/archives/541 screen意外断开后screen -r *** 命令不能进入断开的会话&#xff0c;出现如下提示&#xff1a; There is a screen on: 11103.*** (Attached) There is no screen to be resumed matching ***. 这个时候可以用下面这条命令进入&…

mysql数据迁移

[rootdns var]# service mysqld stop Shutting down MySQL.. [rootdns bin]# ./mysql_install_db --usermysql --datadir/data/mysql_data2转载于:https://blog.51cto.com/alwaysyunwei/1260567

从getmemery()函数看内存管理、函数传参等一系列问题

在C 面试题目中&#xff0c;会经常出现getmemery()函数的改错题&#xff0c;比如下面这道题&#xff0c; 例一&#xff1a;代码如下&#xff1a; [cpp] view plaincopy #include <stdio.h> char *getmemery() { char p[] "hello world!"; …

Java中array、List、Set互相转换

From: https://www.cnblogs.com/yysbolg/p/9977365.html 数组转List String[] staffs new String[]{"A", "B", "C"}; List staffsList Arrays.asList(staffs);//注意: Arrays.asList() 返回一个受指定数组决定的固定大小的列表。所以不能做 a…

Apache Shiro 使用手册(三)Shiro 授权

授权即访问控制&#xff0c;它将判断用户在应用程序中对资源是否拥有相应的访问权限。 如&#xff0c;判断一个用户有查看页面的权限&#xff0c;编辑数据的权限&#xff0c;拥有某一按钮的权限&#xff0c;以及是否拥有打印的权限等等。 一、授权的三要素授权有着三个核心元素…

UVa 10026 - Shoemaker's Problem

题目大意&#xff1a;鞋匠有n个任务&#xff0c;第i个任务要花费ti天&#xff0c;同时第i个任务每耽误一天要有fi的罚金。求完成所有任务的最小罚金。 虽然知道是贪心&#xff0c;可是并不确定如何作贪心选择&#xff0c;只好“取经”了...假如有两个任务i和j&#xff0c;先做i…

mybatis中LIKE模糊查询的几种写法以及注意点

From: https://blog.csdn.net/zhenwei1994/article/details/81876278 mybatis中对于使用like来进行模糊查询的几种方式&#xff1a; &#xff08;1&#xff09;使用${...} 注意&#xff1a;由于$是参数直接注入的&#xff0c;导致这种写法&#xff0c;大括号里面不能注明jdb…

c头文件(.h)的作用

C语言的著作中&#xff0c;至今还没发现把.h文件的用法写的透彻的。在实际应用中也只能依葫芦画瓢&#xff0c;只知其然不知其所以然&#xff0c;甚是郁闷&#xff01;闲来无事&#xff0c;便将搜集网络的相关内容整理一下&#xff0c;以便加深自己的理解 理论概述&#xff1a;…

在VS2012中实现Ext JS的智能提示太简单了

Visual Studio 2012太强大了&#xff0c;居然能自己会去提取Ext JS的类的属性和方法&#xff0c;从而实现只能提示。下面就来介绍一下实现这个功能。在Visual Studio 2012中随便创建一个Web项目&#xff0c;我创建了一个空的Web项目&#xff0c;目录结构如下图所示&#xff1a;…