Mybatis中注解@MapKey的使用详解

MyBatis查询一些记录,数据涉及到两个表里的数据,需要连表查询,但我MyBatis的返回结果不想创建新的DO对象,因此使用@MapKey注解返回一个Map集合。
含义:@MapKey注解用于mapper.xml文件中,一般用于查询多条记录中各个字段的结果,存储在Map中。Map结构的示例如下:
Map<Long, Map<String, String>>。范型类型可以修改。
Map的key:一般存储每条记录的主键,也可以用其他值表示,主要取决于Dao层@MapKey注解后面的字段(如@MapKey("id"));
Map的value:也是一个Map,表示查询出这条记录的每个字段的字段名称和字段值。

1. mapper.xml文件

<select id="getInfoById" resultType="java.util.Map">selectext.id as id,info.produce_area as area,ext.attribute_value as companyNamefrom product_info infoleft join product_ext ext on info.id=ext.idwhere info.id=#{id} and ext.attribute_name=#{name}
</select>

2. dao

@MapKey("id")
Map<Long,Map<String,String>> getInfoById(@Param("id") Long id, @Param("name") String name);

3. manager

// 查询,返回结果:{1={area:上海,companyName=西西公司}}
// 如果是多条记录,返回结果如:{1={area:上海,companyName:西西公司},2={area:南京,compantyName:猴猴公司}}
Map<Long, Map<String, String>> map = productDao.getInfoById(id, "公司名称"); 
if(map==null || map.isEmpty() || !map.containsKey(id)){return null;
}// 获取结果
String area = produceInfoMap.get(id).get("area");
String companyName = produceInfoMap.get(productTracInfoId).get("companyName");

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

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

相关文章

更新 绑定数据_Blazor 修仙之旅 组件与数据绑定

一.前言在第一篇文章初尝 Blazor WebAssembly中&#xff0c;有提到过组件(Component)这个概念。组件在 Blazor 中是必不可少的&#xff0c;UI 全靠它组装起来&#xff0c;和前端的 JS 组件是一个意思&#xff0c;比如&#xff1a;vue component、react component 等等。借用官方…

关于使用idea工具debug时,断点颜色由红色变成灰色解决方法

在使用断点调试的时候&#xff0c;发现断点由原来的红色变成灰色的&#xff0c;后来发现是由于错误操作将Debug断点调试禁用了 &#xff0c;只需要点击禁用按钮取消就可以了

改变图标颜色_LOL设计师宣布修改装备图标:提高清晰度、颜色差异化

在11月12日&#xff0c;英雄联盟更新到了最新的季前赛版本。这次官方除了对部分英雄进行改动&#xff0c;主要是对于装备的图标和属性进行了更新。而在图标更新后&#xff0c;很多装备的样子都发生了很大的变化。这也导致很多老玩家在进游戏后&#xff0c;看着装备栏发呆&#…

虚拟机中centos安装gcc

yum install gcc-c 一、首先是&#xff1a;使得虚拟机联网 使用NAT模式 虚拟机网络连接使用NAT模式&#xff0c;物理机网络连接使用Vmnet8。 虚拟机设置里面——网络适配器&#xff0c;网络连接选择NAT模式。 虚拟机菜单栏—编辑—虚拟网络编辑器&#xff0c;选择Vmnet8 NAT模式…

gcd(欧几里得算法)

基础 1 int gcd(int a,int b) 2 { 3 int r; 4 while(b>0) 5 { 6 ra%b; 7 ab; 8 br; 9 } 10 return a; 11 } View Code递归 1 int gcd(int a,int b) 2 { 3 return (b>0)?gcd(b,a%b):a; 4 } Vi…

网络摄像头sdk_SenseDLC嵌入式人像识别SDK 安防边缘的“小巨人”

随着这些年将人工智能技术赋能行业的不断深入&#xff0c;商汤科技对智慧城市建设有着更深的理解。通过不断实践发现&#xff0c;很多区域由于摄像头数量和布置等问题较难有效做到清晰的人脸抓拍&#xff0c;且单一的人脸识别会遇到诸多干扰&#xff0c;比如发型、胖瘦、年纪、…

使用最大似然法来求解线性模型(1)

在Coursera机器学习课程中&#xff0c;第一篇练习就是如何使用最小均方差(Least Square)来求解线性模型中的参数。本文从概率论的角度---最大化似然函数&#xff0c;来求解模型参数&#xff0c;得到线性模型。本文内容来源于&#xff1a;《A First Course of Machine Learning》…

.net aspose.words 域加载图片_使用Python批量替换csdn文章的图片链接

欢迎大家关注我的微信公众号“IT工匠”获取更多资源(涉及算法、数据结构、java、深度学习、计算机网络、python、Android等互联网技术资料)。前言笔者之前的写作习惯一直是在本地(MacTyporaIpac)写好之后将markdown代码粘贴到csdn&#xff0c;图片是Ipac自动上传到微博匿名图床…

基恩士上位机链路通讯_基恩士PLC通讯源码

基恩士PLC KV7000,8000还是比较好用的&#xff0c;那如何和上位机通讯&#xff0c;我把源码写出来了。采用上位链路通讯&#xff0c;基恩士官方给我们留了8501端口,这个端口有意思刚好是我生日。基恩士的资料我觉得做的特别好&#xff0c;能快速写源代码得益于官方资料特别详细…

fastq质量值_fastq 数据格式解析

概念介绍Read 读段Read 中文翻译&#xff1a; 读段&#xff0c;来自测序仪的raw data一个Read 可能由多个片段组成&#xff0c; Read的索引是测序时的顺序Sequencing quality 测序质量测序仪在测序的时候&#xff0c;每次测出来的结果可能都不一样(仪器误差 序列长度等各方面因…

画像分析(3-3)标签建模-模型管理-新建关系

1、关系是什么 关系&#xff0c;是实体与实体之间所发生的连接&#xff0c;通常表示某一种行为/一个事实&#xff0c;如成交、搜索、出行。从数据表的角度来看&#xff0c;这样的表通常被称为”事实表“&#xff0c;往往是有多个联合主键&#xff08;或是说都是外键&#xff09…

二进制、八进制、十进制、十六进制之间的转换

在计算机语言中常用的进制有二进制、八进制、十进制和十六进制&#xff0c;十进制是最主要的表达形式。 对于进制&#xff0c;有两个基本的概念&#xff1a;基数和运算规则。 基数&#xff1a;基数是指一种进制中组成的基本数字&#xff0c;也就是不能再进行拆分的数字。二进…

【BZOJ 2753】 2753: [SCOI2012]滑雪与时间胶囊 (分层最小树形图,MST)

2753: [SCOI2012]滑雪与时间胶囊 Time Limit: 50 Sec Memory Limit: 128 MBSubmit: 2457 Solved: 859Description a180285非常喜欢滑雪。他来到一座雪山&#xff0c;这里分布着M条供滑行的轨道和N个轨道之间的交点&#xff08;同时也是景点&#xff09;&#xff0c;而且每个景…

SortedMap接口实现排序

SortedMap接口主要提供有序的Map实现。SortedMap接口是排序接口&#xff0c;只要是实现了此接口的子类&#xff0c;都属于排序的子类&#xff0c;TreeMap也是此接口的一个子类 Map的主要实现有HashMap,TreeMap,HashTable,LinkedHashMap。 TreeMap实现了SortedMap接口&#xf…