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. ...
随机推荐
- python排序算法之一:冒泡排序(及其优化)
相信冒泡排序已经被大家所熟知,今天看了一篇文章,大致是说在面试时end在了冒泡排序上,主要原因是不能给出冒泡排序的优化. 所以,今天就写一下python的冒泡排序算法,以及给出一个相应的优化.OK,前 ...
- 阿里架构师的这一份Spring boot使用心得:网友看到都收藏了
阿里架构师的这一份Spring boot使用心得: 这一份PDF将从Spring Boot的出现开始讲起,到基本的环境搭建,进而对Spring的IOC及AOP进行详细讲解.以此作为理论基础,接着进行数 ...
- bs4-爬取小说
bs4 bs4有两种运行方式一种是处理本地资源,一种是处理网络资源 本地 from bs4 import BeautifulSoup if __name__ == '__main__': fr = o ...
- 【JZOJ】3490. 旅游题解报告
题目 思路 这道题看上去就像一个动态规划!但是还是要把矩阵压成一行. 然后按 \(A\)数组 将结构体从小到大排个序. 随后我们开始了动规标准步骤: 确定状态 很显然, \(f_i\) 表示游览完第\ ...
- PHP自动发红包代码示例
<?php header('Content-type:text'); define("TOKEN", "weixin"); $wechatObj = ne ...
- mysql 忘记登录密码(修改root密码)
1.以管理员身份打开cmd,键入net stop mysql,停止mysql 2.切换到mysql的安装目录下(例:S:\mysql\mysql-8.0.18-winx64\mysql-8.0.18- ...
- 《手把手教你》系列进阶篇之1-python+ selenium自动化测试 - python基础扫盲(详细教程)
1. 简介 如果你从一开始就跟着宏哥看博客文章到这里,基础篇和练习篇的文章.如果你认真看过,并且手动去敲过每一篇的脚本代码,那边恭喜你,至少说你算真正会利用Python+Selenium编写自动化脚本 ...
- Redis 中的数据库
前面我们花了很多的时间介绍了 redis 中基本的数据结构,及其内部的实现情况,这些都是非常基础的东西,可能不经意间你就会用到他们,希望你花点时间了解一下. 接下来,我们将走近 redis 数据库,学 ...
- IOS开发中制作属于自己的静态库.a、资源库.bundle、.framework
一.什么是库 库实际上是一种代码共享的方式,主要用于代码重用和源码隐藏,通常分为动态库和静态库. 静态库:链接时完整的拷贝至可执行文件中,被多次使用就有多份冗余拷贝. 动态库:链接时不复 ...
- jQuery中操作页面的文本和值
主要是区分俩种方法: 1.html():可以识别HTML文件,将里面内容全部打印(操作双标签) 2.text():只是将里面的内容打印出来,不能识别HTML格式(操作双标签) <!DOCTYPE ...