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. ...
随机推荐
- Java 大小端转换(基于ByteBuffer)
大小端的基础知识: 小端( little-endian):低位字节在前,高位字节在后.大端( Big-Endian),则反之.具体而言,就是为了说清楚,CPU架构1 字(word)中byte的存储顺序 ...
- Python下定义输出日志
# 话不多说,直接看代码,,, # -*- coding:UTF-8 -*- # python version: 2.7.15 #脚本名, 日志名,日志路径 import os import sys ...
- PHP后端代码生成微信小程序带参数的二维码保存成jpg图片上传到服务器getwxacodeunlimit
老板最近有点飘了,他要在PC端的网站放一个微信小程序的二维码,并且扫描这个二维码以后要跳到小程序对应的房源详情页. 这是微信官方给出的文档,连接地址:https://developers.weixin ...
- c语言基本数据类型short、int、long、char、float、double大小及命名规则
C 语言包含的数据类型: 一.数据类型与“模子”short.int.long.char.float.double 这六个关键字代表C 语言里的六种基本数据类型. 怎么去理解它们呢? 举个例子:见过藕煤 ...
- js杂项积累
主要内容: 一 浏览器重定向Http请求跨域 二 html select标签 可以设置属性multipe,变为多选 三 document.wirte只应在script标签的顶层代码中使用.不能放在函数 ...
- TestNG系列(二)TestNG注解
前言 TetsNG提供了很多注解,允许测试人员灵活地组织测试用例 一.@Test @Tets是TestNG的核心注解,被注解的方法,表示为一个测试方法. description属性 @Test(des ...
- nginx部署安装
首先需要下载Nginx软件包 nginx软件官方下载地址:[nginx官方下载连接](http://www.nginx.org) 建议选择稳定的软件版本,如果练习使用当然是无所谓,随便什么版本都可以, ...
- 配置基于全局地址池的DHCP
配置基于全局地址池的DHCP 配置基于全局地址池的DHCP服务器,从所有接口上的用户都可以选择该地址池中的地址,是个公共地址池. 实验 1.拓扑图 2.实验步骤 基本配置 开启DHCP功能 创建一个全 ...
- 16.Django学习之文件上传和下载
上传就这么六步! 一. settings配置文件中配置 MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'medias').repl ...
- A.Single Push
题目:简单推动 题意:你被给予两个相同长度为n的数组a[1...n]和b[1...n] 目的是进行一个推入操作,你会选择l,r,k三个数字满足1 <= l <= r <= n 还有 ...