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. ...
随机推荐
- 从零开始入门 K8s | 深入剖析 Linux 容器
作者 | 唐华敏(华敏) 阿里云容器平台技术专家 本文整理自<CNCF x Alibaba 云原生技术公开课>第 15 讲. 关注"阿里巴巴云原生"公众号,回复关键词 ...
- ##* %%* linux变量处理
链接来自他们分享,,,, 如有侵权,请联系本人删除,本人将立即删除.停止分享. https://blog.csdn.net/fengzijinliang/article/details/4252021 ...
- mysql 安装报错集合
mysql-5.6.39 源码编译安装报错 报错信息: /tmp/ccV858jD.s: Assembler messages: /tmp/ccV858jD.s: Fatal error: can't ...
- Idea工具Debug快捷键
F9 resume programe 恢复程序 Alt+F10 show execution point 显示执行断点 F8 Step Over 相当于eclipse的f6 跳到下一步 F7 Step ...
- 2019-2020-1 20199304《Linux内核原理与分析》第七周作业
进程的描述和进程的创建 1.进程描述 1.1操作系统的三大管理功能以及对应的抽象概念: 进程管理 内存管理 文件系统 1.2Linux进程的状态: (1)Linux中进程的状态细分可以分为七种: R运 ...
- 谁说微服务是Spring Cloud的独角戏?Service Mesh了解一下?
Service Mesh 的概念自 2017 年初提出之后,受到了业界的广泛关注,作为微服务的下一代发展架构在社区迅速发酵,并且孵化出了诸如 Istio 等广受业界关注的面向于云原生 (Cloud N ...
- ios开发之block的使用,及注意事项
转自:http://my.oschina.net/u/1432769/blog/390401 Block作为C语言的扩展,并不是高新技术,和其他语言的闭包或lambda表达式是一回事.需要注意的是由于 ...
- cesium 结合 geoserver 实现地图属性查询(附源码下载)
前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内 ...
- AtCoder-3856
An adult game master and N children are playing a game on an ice rink. The game consists of K rounds ...
- iOS和webppy图片的爱恨情仇
如果iOS是个好哥哥,webppy一定是一个持家能干的漂亮姑娘