MyBatis关联查询,一对多关联查询
实体关系图,一个国家对应多个城市

一对多关联查询可用三种方式实现:
- 单步查询,利用collection标签为级联属性赋值;
- 分步查询:
- 利用association标签进行分步查询;
- 利用collection标签进行分步查询
单步查询
利用collection标签实现一对多单步关联查询:
- 指定进行关联查询的Java Bean字段,即collection标签的 property 属性;
- 指定集合中的Java Bean类型,即collection标签的 ofType属性;
实体类
public class CountryPlus {
Long id;
String name;
Date lastUpdate;
List<City> cityList;
}
public class City {
Long id;
String name;
Long countryId;
Date lastUpdate;
}
查询标签
<select id="selectCountryPlusById" resultMap="countryPlusResultMap">
select country.country_id as country_id,
country,
country.last_update as last_update,
city_id,
city,
city.country_id as city_country_id,
city.last_update as city_last_update
from country left join city on country.country_id = city.country_id
where country.country_id=#{id}
</select>
resultMap
<resultMap id="countryPlusResultMap" type="canger.study.chapter04.bean.CountryPlus">
<id column="country_id" property="id"/>
<result column="country" property="name"/>
<result column="last_update" property="lastUpdate"/>
<collection property="cityList" ofType="canger.study.chapter04.bean.City">
<id column="city_id" property="id"/>
<result column="city" property="name"/>
<result column="city_country_id" property="countryId"/>
<result column="city_last_update" property="lastUpdate"/>
</collection>
</resultMap>
分步查询
利用collection标签进行分步查询
- 指定collection标签的 property 属性;
- 通过select属性指定下一步查询使用的 statement id;
- 通过column属性向下一步查询传递参数,传递多个参数的方法见MyBatis关联查询,一对一关联查询中的分步查询;
select标签
<select id="selectCountryPlusByIdStep" resultMap="countryPlusResultMapStep">
select *
from country
where country_id=#{id}
</select>
resultMap标签
<resultMap id="countryPlusResultMapStep" type="canger.study.chapter04.bean.CountryPlus">
<id column="country_id" property="id"/>
<result column="country" property="name"/>
<result column="last_update" property="lastUpdate"/>
<collection property="cityList"
select="canger.study.chapter04.mapper.CityMapper.selectCityByCountryId"
column="country_id">
</collection>
</resultMap>
利用association标签进行分步查询
和使用collection标签的方式相同
MyBatis关联查询,一对多关联查询的更多相关文章
- 阶段3 1.Mybatis_12.Mybatis注解开发_7 Mybatis注解开发一对多的查询配置
一对多的配置,一个用户对应多个账户 需要在Accout里面增加根据用户的uid查询的方法 在user里面指定子一对多的查询配置 换行显示 测试 把这里注销掉.测试延迟加载,代码注释掉后,延迟加载就没有 ...
- 【mybatis】在mybatis分页查询时,主表对关联表 一对多 分页查询怎么实现
现在有这样一个需求: 1.积分商品分页查询 2.一个积分商品会有多张商品图片在商品图片表 1:n的关系 这样在积分商品分页查询的时候,想要顺便把每个积分商品对应的商品图片信息也带出来 实现如下: 1 ...
- Mybatis一对一、一对多级联查询使用
在A对象的xml配置文件中 一对一<association property="shop" column="shop_id" select="c ...
- mybatis一对一 和 一对多 嵌套查询
实际项目中的,接口对外VO 会出现 一对一 和 一对多的情况,举例:小区 下面有 楼栋 ,楼栋 下面有 房屋 , 房屋里面又房间 小区Vo : districtVo { id: nam ...
- Mybatis 配置resultMap一对多关联映射
resultMap配置: 引用: PO类: 接口: 测试: public class UserMapperTest { private SqlSessionFactory sqlSessionFact ...
- Mybatis @Many注解一对多关联映射
@Many注解:fetchType属性用于配置是否延迟加载
- 7.mybatis一对多关联查询
和第5节一对一查询类似,但是不同的是,一对一使用的是association,而一对多使用collection. 实例: 1个班级Class,对应1个老师Teacher,对应多个学生Student 1. ...
- mybatis collection 一对多关联查询,单边分页的问题总结!
若想直接通过sql实现多级关联查询表结构得有2 个必不可少的字段:id ,parentId,levelId id:主键id, parentId:父id levelId:表示第几级(表本身关联查询的时候 ...
- ThinkPHP5——模型关联(一对多关联)
关联定义 一对多关联的情况也比较常见,使用hasMany方法定义,参数包括: hasMany('关联模型名','外键名','主键名',['模型别名定义']); 例如租客表和宿舍表,一个宿舍有多个租客, ...
- hihernate一对多关联映射
hihernate一对多关联映射 一对多关联映射利用了多对一关联映射原理 多对一关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是多指向一 一对多关联映射:在多的一端加入一个外键指向一的一端 ...
随机推荐
- STM32 串口中断总结
原文:https://blog.csdn.net/weixin_42480952/article/details/82981409 最近在学习使用dma传输方式进行串口通讯,感觉这个很详细,存一下 . ...
- Java并发(一)并发编程的挑战
目录 一.上下文切换 1. 多线程一定快吗 2. 测试上下文切换次数和时长 3. 如何减少上下文切换 4. 减少上下文切换实战 二.死锁 三.资源限制的挑战 四.本章小结 并发编程的目的是为了让程序运 ...
- 转自:strcmp函数实现及详解
strcmp函数是C/C++中基本的函数,它对两个字符串进行比较,然后返回比较结果,函数形式如下:int strcmp(constchar*str1,constchar*str2);其中str1和st ...
- 深入解析Java中的装箱和拆箱
自己主动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题.本文先讲述装箱和拆箱最主要的东西,再来看一以下试笔试中常常遇到的与装箱.拆箱相关的问题. 下面是本 ...
- Bat 批处理杀死进程 重新启动程序
@echo offset pa=%cd%taskkill /F /IM wgscdTool.exeecho %pa%\wgscdTool.exeping /n 2 127.1>nulstart ...
- Android开发——进程间通信之Messenger
0. 前言 不论是Android还是其他操作系统,都会有自己的IPC机制,所谓IPC(Inter-Process Communication)即进程间通信.首先线程和进程是很不同的概念,线程是CPU ...
- EZ 2018 03 30 NOIP2018 模拟赛(六)
链接:http://211.140.156.254:2333/contest/67 转眼间上次加回来的Rating又掉完了. 这次不知为何特别水,T1想了一段时间没想出来弃了,导致后面心态炸了. T2 ...
- navicat 创建查询失败 can not create file
数据库连接很正常, 却无法创建查询, 不知道啥毛病 竟然是存储路径问题,点开连接属性,修改高级里面的保存路径,删掉“:3308”, OK了.冒号是个windows保留的盘符,应该就是这个原因
- CS50.2
1,ssd硬盘(solid state disk),固态硬盘,固盘. 2,把电磁信号转化为0或者1 ps:记得吧图给加上 反向即从磁盘中得到数据 3,软盘,floppy disk.早期使用的一种存储. ...
- 牛客网NOIP赛前集训营-提高组(第八场)-B-推箱子[最短路优化建图]
题意 有 \(n\) 个箱子,指定一个箱子开始向右推,如果碰到了别的箱子会令其移动,问 \(k\) 秒之后每个箱子所在的位置. \(n\leq 10^5\). 分析 转化成最短路模型,如果两个箱子 \ ...