MyBatis结果集一对多映射
MyBatis结果集一对多映射
需求:重画二维码配置类,根据sizeCode将查询出来的imageCode分组。
DROP TABLE IF EXISTS `size_code`;
CREATE TABLE `size_code` (
`sizeCode` int(11) DEFAULT NULL,
`sizeCodeName` varchar(255) DEFAULT NULL,
`imageCode` int(11) DEFAULT NULL,
`imageCodeName` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ----------------------------
-- 这里特意将sizeCode相同时,sizeCodeName为了测试设置了不同的值。(本来应该是一致的)
-- ----------------------------
INSERT INTO `size_code` VALUES ('1', '15X19', '1', '红色');
INSERT INTO `size_code` VALUES ('1', '15X18', '2', '橙色');
INSERT INTO `size_code` VALUES ('2', '12X12', '1', '古风');
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mozq.mb.mb01.mapper.SizeCodeMapper">
<select id="find" resultType="com.mozq.mb.mb01.pojo.SizeCode">
select * from size_code
</select>
<!--没有id属性时,result的所有列,(sizeCode,sizeCodeName)的值都不同会创建一个对象,值相同的则将结果封装到imageCodeList-->
<resultMap id="SizeCodeImageCodeMap" type="com.mozq.mb.mb01.pojo.SizeCode">
<result column="sizeCode" property="sizeCode" />
<result column="sizeCodeName" property="sizeCodeName" />
<collection property="imageCodeList" ofType="com.mozq.mb.mb01.pojo.ImageCode">
<result column="imageCode" property="imageCode" />
<result column="imageCodeName" property="imageCodeName" />
</collection>
</resultMap>
<select id="findDetail" resultMap="SizeCodeImageCodeMap">
select * from size_code
</select>
<!--有id属性时,id属性不同,则创建一个单独的对象,其余属性取的时查询出来第1条记录的属性,id相同的记录都封装到imageCodeList -->
<resultMap id="SizeCodeImageCodeMap2" type="com.mozq.mb.mb01.pojo.SizeCode">
<id column="sizeCode" property="sizeCode" />
<result column="sizeCodeName" property="sizeCodeName" />
<collection property="imageCodeList" ofType="com.mozq.mb.mb01.pojo.ImageCode">
<result column="imageCode" property="imageCode" />
<result column="imageCodeName" property="imageCodeName" />
</collection>
</resultMap>
<select id="findDetail2" resultMap="SizeCodeImageCodeMap2">
select * from size_code
</select>
</mapper>
package com.mozq.mb.mb01.mapper;
import com.alibaba.fastjson.JSONObject;
import com.mozq.mb.mb01.pojo.SizeCode;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
@SpringBootTest
public class SizeCodeMapperTest {
@Autowired
private SizeCodeMapper sizeCodeMapper;
@Test
public void findDetail(){
List<SizeCode> sizeCodes = sizeCodeMapper.findDetail();
System.out.println(JSONObject.toJSONString(sizeCodes));
}
@Test
public void findDetail2(){
List<SizeCode> sizeCodes = sizeCodeMapper.findDetail2();
System.out.println(JSONObject.toJSONString(sizeCodes));
}
@Test
public void find(){
List<SizeCode> sizeCodes = sizeCodeMapper.find();
System.out.println(sizeCodes);
}
}
package com.mozq.mb.mb01.mapper;
import com.mozq.mb.mb01.pojo.SizeCode;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface SizeCodeMapper {
List<SizeCode> find();
List<SizeCode> findDetail();
List<SizeCode> findDetail2();
}
[
{
"imageCodeList":[
{
"imageCode":1,
"imageCodeName":"红色"
}
],
"sizeCode":1,
"sizeCodeName":"15X19"
},
{
"imageCodeList":[
{
"imageCode":2,
"imageCodeName":"橙色"
}
],
"sizeCode":1,
"sizeCodeName":"15X18"
},
{
"imageCodeList":[
{
"imageCode":1,
"imageCodeName":"古风"
}
],
"sizeCode":2,
"sizeCodeName":"12X12"
}
]
[
{
"imageCodeList":[
{
"imageCode":1,
"imageCodeName":"红色"
},
{
"imageCode":2,
"imageCodeName":"橙色"
}
],
"sizeCode":1,
"sizeCodeName":"15X19"
},
{
"imageCodeList":[
{
"imageCode":1,
"imageCodeName":"古风"
}
],
"sizeCode":2,
"sizeCodeName":"12X12"
}
]
MyBatis结果集一对多映射的更多相关文章
- Spring Boot MyBatis 数据库集群访问实现
Spring Boot MyBatis 数据库集群访问实现 本示例主要介绍了Spring Boot程序方式实现数据库集群访问,读库轮询方式实现负载均衡.阅读本示例前,建议你有AOP编程基础.mybat ...
- spring + mybatis合集
一.Spring 1. IoC 什么是IoC: 跟我一起学Spring 3(4)–深入理解IoC(控制反转)和DI(依赖注入) Spring中IoC的优点与缺点 spring Ioc 实践 IoC如何 ...
- MyBatis高级查询 一对多映射
数据库表在一对一映射中. 在数据库sys_user_role中新增一条记录 一个用户可以有多个角色.查询出所有用户和所对应的角色. 1.collection集合的嵌套结果映射 <!-- SysU ...
- Mybatis结果集ResultMap映射
基本使用: 解决属性名和数据库字段名不一致的问题 <resultMap id="user" type="com.guan.bean.UserBean"&g ...
- springMVC+spring+MyBatis(SSM)的简单配置
SSM(Spring+SpringMVC+MyBatis)框架集由Spring.SpringMVC.MyBatis三个开源框架整合而成,常作为数据源较简单的web项目的框架. 其中: Spring是一 ...
- MyBatis 查询示例
环境搭建 数据库schema 1)datasource.xml配置 <?xml version="1.0" encoding="UTF-8"?> & ...
- mybatis 3.x源码深度解析与最佳实践(最完整原创)
mybatis 3.x源码深度解析与最佳实践 1 环境准备 1.1 mybatis介绍以及框架源码的学习目标 1.2 本系列源码解析的方式 1.3 环境搭建 1.4 从Hello World开始 2 ...
- Mybatis学习---Mybatis分页插件 - PageHelper
1. Mybatis分页插件 - PageHelper说明 如果你也在用Mybatis,建议尝试该分页插件,这个一定是最方便使用的分页插件. 该插件目前支持Oracle,Mysql,MariaDB,S ...
- idea的ssm搭建(复制)
1.工具/原料 • apache-tomcat-7.0.63 http://download.csdn.net/detail/lxfhahaha/9778163 • apache-maven-3.3. ...
随机推荐
- MySQL统计各个表中的记录数
通过下面的SQL语句可以统计出数据库的各个表中的记录数: select table_schema, table_name,table_rows from information_schema.tabl ...
- python中字典数据类型常用操作
创建字典 字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示: ...
- Python面试的一些心得,与Python练习题分享【华为云技术分享】
版权声明:本文为CSDN博主「华为云」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net/devcloud/arti ...
- 第七章终结篇——8251A的总结
总算把这个第七章复习完了,我把剩下一点关于8251A的发上来吧 本来在讲解8251A书本上还有关于RS232和串口通信的讲解,但是太浅了,就不放了,有兴趣的朋友可以自行参考其他文章 串行通信芯片825 ...
- mac终端基本命令
一 基本命令 1.列出文件 ls 参数 目录名 参数 -w 显示中文,-l 详细信息, -a 包括隐藏文件 例: 看看驱动目录下有什么:ls /System/Library/Extensions 2. ...
- Docker系列-(1) 原理与基本操作
Docker是一个开源的应用容器引擎,基于Go语言,并遵从Apache2.0协议开源. Docker可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的Linux机器 ...
- Python脚本之三种运行方式,你会几个?
前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:Jeremy_Lee123 一.交互模式下执行 Python 这种模式 ...
- 使用iCamera 测试mt9d111 200w高分辨率摄像头小结
使用iCamera 测试mt9d111 200w高分辨率摄像头小结 先看下产品特性 安装效果 根据前面博客的经验,该摄像头,默认配置即有输出,分辨率为800*600,yuv 于是可以写 如果使用默认配 ...
- nmap扫描、信息收集(网安全实训第一天)
本期内容:网站信息收集.nmap扫描 1. 信息收集 2. nmap扫描1.信息收集 (1)确定目标 首先,我们确定攻击目标,在这里,我们随便找一个网站做测试,我以码云为例. (2)nslookup查 ...
- 使用jmeter进行接口测试
目录 jmeter介绍 jmeter安装 修改UTF-8 jmeter主要测试组件 jmeter元件作用域与执行顺序 使用Jmeter进行接口测试 jmeter介绍 JMeter是Apache基金会J ...