MyBatis-关联查询的对象是集合的处理

【实战指南】OpenClaw 使用 Bird Skill 接入 X(Twitter)的终极省心方案:告别每次都要手动喂 Cookie 的痛苦 OpenClaw 使用 Bird Skill 接入 X(Twitter)的终极省心方案:告别每次都要手动喂 Cookie 的痛苦 阅读详情

用户和角色之间是多对多的关系,也就是说,一个用户可以有多个角色与之绑定,所以在User对象中,角色的属性就必须是一个集合Set或者List,这里我们就用List集合在做例子:

1.怎么在Mybatis中实现关联的List集合对象roles的查询,关键就是collection标签的使用:

2.同样和association标签查询单个关联对象的属性一样,集合类型的关联属性也可以懒加载:

把前面的三表联合查询,变量两段,先查出user对象,然后在根据user_id查询出对应的角色list集合

配合上全局变量的设置,懒加载即实现了:

最后在总结一下,并补充两个知识点:

不管是association标签还是collection标签,在分步查询的时候,都可以用column属性,给select指定的sql语句传入某列的值做参数,这里补充的第一个知识点就是,前面的传参都是只传入了一个参数,所以,如果需要传入多个参数是怎么办? 可以封装成Map对象,写成这个的格式{key=value,.....}

第二个知识点,其实前面已经提及了一下,就是全局虽然设置为了懒加载,但是如果某个关联对象查询,不想使用懒加载,要立即加载,不用在改回全局变量,只需要association标签或者collection标签设置上fetchType属性就可以,它有两个取值:lazy表示懒加载,eager表示立即加载! 

 

27-eMMC电路设计 eMMC硬件电路设计 阅读详情

相关推荐

【Flink cdc】Data row is smaller than a column index, internal schema representation is probably xxx

翻译一下:当scan.startup.mode=EARLIEST_OFFSET时,如果在最早的offset之后表结构有过变化就无法支持。原因应该是在binlog 的earliest_offset之后,表结构被修改过。我的解决方案:source配置中使用。mysql source配置使用。,以时间戳为消费依据。

integrity 2085

MyBatis 传入List集合作为条件查询数据

xx.xml <select id="getProjectByCode" parameterType="java.util.List" resultMap="BaseResultMap"> select t1.CODE,t1.NAME,t2.PROJECT_NAME as projectName,t2.TEST_CATEGORY as testCategory,t2.CHECK_TEST_ITEM as checkTestItem from t_q.

sh_run的博客 2402

【20230415】Ubuntu22.04双屏显示触屏设置,解决触摸点和响应位置不一致的问题

双屏显示时,如果存在一个触摸屏,有可能会出现触摸点和响应位置不一致的问题。我的显示器配置如下:一个34寸,3440*1440;一个22英寸触摸屏,1920*1080。

Creationyang的博客 3216

Mybatis 返回对象中包含 List集合

遇到这种情况的实体类,需要在mapper.xml文件里使用resultMap标签以及其他子标签.先贴代码:实体类:UserEntity类:private Long id;// 用户id private String username;// 用户名 private String password;// 密码 private List userRoles;// 用户角色集合Role类:public class Role { private Integer id; //角色id private String

geejkse_seff的博客 2066

龙芯2K1000 OTG双模驱动深度解析

是Synopsys公司开发的USB 2.0 OTG控制器IP核,龙芯2K1000内置该IP,作为唯一的OTG控制器(PCI Dev4 Func0),物理基地址0x40000000。核心能力:同时支持Host主机模式(接U盘/键盘)、Device设备模式(虚拟串口ttyGS0)、OTG双模自动切换速率驱动路径:内核源码PMON:启用otg0设备树内核:开启HOSTPERIPHERALG_SERIAL启动参数脚本:sysfs角色切换+开机自启Host按以上配置,龙芯2K1000 DWC2 OTG可完美实现。

weixin_44932366的博客 377

注册GitHub时出现Unable to verify your captcha response.Please visit https://docs.github.com/解决方案(持续更新)

本文主要介绍了注册GitHub时出现Unable to verify your captcha response. Please visit https://docs.github.com/articles/troubleshooting-connectivity-problems/#troubleshooting-the-captcha for troubleshooting information.解决方案,希望能对学习使用GitHub的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 8万+

mybatis Sql查询 返回对象或者list数据中包含一个对象的list集合

1.查询的数据对象 @Data public class JdOrder implements Serializable{ private Long orderId; private Long finishTime; private Integer orderEmt; private Long orderTime; private Long pare...

yijian941215的博客 2万+

C# MES通信从入门到精通(1)——串口传输文件

本文详细介绍了在Mes通信领域如何使用串口发送文件,由实战经验总结,堪称MES通信领域的葵花宝典!

qq_34059233的博客 3753

mybatis查找的结果集对象中包含对象和集合的用法

平时项目中使用mybatis查询数据库,对象结果集可能比较复杂,对象中嵌套对象或者集合。 如下图所示,返回结果集对象project中包含其他子对象(查询的主表与关联子表数据一对一关系)和list集合(查询的主表与关联子表数据一对多关系): 解决方案: 对象下面嵌套的对象采用&lt;association&gt;写法,嵌套的集合采用&lt;collection&gt;写法 写法实例: ...

NasubiZW 7万+

30天Python入门(第一天:Python入门)

30天带你入门Python,这是第一天

Science prince的博客 584

02-Redis 核心特性与数据结构详解:揭秘高性能的技术内核

本文深度拆解 Redis 高性能的技术内核:揭秘其凭“内存存储 + C 语言开发” 实现微秒级延迟、10 万 + QPS 的性能优势;详解 5 种基础数据类型(String/Hash 等)与 4 种扩展数据类型(Stream/Geospatial 等)的特性及场景;还介绍多语言支持、RDB/AOF 持久化、主从复制 / 哨兵 / 集群等高可用方案,助读者掌握 Redis 技术核心与实践逻辑。

蜗牛老师,专注编程领域 997

Mybatis:Mybatis的各种查询功能(5)

Mybatis的各种查询功能,包括:查询一个实体类对象、查询一个List集合、查询单个数据、查询一条数据为map集合、查询多条数据为map集合。

qq_43751200的博客 889

滚雪球学Java(01):Java是什么?| 入门指南

🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!!

**My Coding Family** 629

【Mybatis】关联查询的对象是集合的处理

前面我们假设的是一个用户只能绑定一个角色,但实际上权限管理模型中,用户和角色之间是多对多的关系,也就是说,一个用户可以有多个角色与之绑定,所以在User对象中,角色的属性就必须是一个集合。把前面的三表联合查询,变量两段,先查出user对象,然后在根据user_id查询出对应的角色list集合。

只恨天高的博客 436

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

mybatis Sql查询 返回对象或者list数据中包含一个对象的list集合

1. 查询的数据对象 @Data public class JdOrder implements Serializable{ private Long orderId; private Long finishTime; private Integer orderEmt; private Long orderTime; private Long pa...

WULILL的博客 5417

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

mybatis嵌套查询的使用

当我们遇到表与表之之间存在关联的时候,就可以使用mybatis的嵌套查询 比如说 当一个对象包含了另一个对象 /** * 公交实体类中包含了司机信息和路线信息 */ public class Bus implements Serializable { private Integer id; private String card; private Integer d...

jamesluozhiwei的博客 1万+

Mybatis多对一查询处理和一对多查询处理

复杂查询环境搭建 CREATE TABLE `teacher` ( `id` INT(10) NOT NULL, `name` VARCHAR(30) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8 INSERT INTO teacher(`id`, `name`) VALUES (1, '秦老师'); CREATE TABLE `student` ( `id` INT(10) NOT NULL, `name

tuc1997的博客 160

MyBatis第五讲:MyBatis关联查询

注意:有时我们为了方便,在不同的表中存在相同字段名,或在不同实体对象中存在相同属性名,这样在关联查询时可能会造成查询结果不正确,经常遇到的就是集合中只有一条数据,但是在数据库中存在多条结果,这样问题,只要调整字段名和属性名即可。当数据库出现表与表之间一对多关系时,一的一方可以获取到多的一方的集合,多的一方可以获取到一的一方的对象。多对多查询,它的本质就是两个一对多的组合,同样它所使用的标签元素也是 collection标签。当数据库出现表与表之间一对一关联时,通过resultMap映射出实体信息。

跟着老高学Java 417

mybatis查询对象嵌套对象

public class CompanyDetail extends DataEntity{         private String id;         private String companyId;         private String name;        private String shortName;       private Date establishDa...

po_oo的博客 3358

Mybatis关联查询之一对多和多对一XML配置详解

平时在开发过程中dao、bean和XML文件都是自动生成的,很少写XML的配置关系,今天记录一下mybatis的关联查询中的多对一和一对多的情况。 首先是有两张表(学生表Student和老师Teacher表),为了更易懂,这里只设置了最简单的几个必要字段。表结构如下图: Student表: ​ Teacher表: ​ 创建实体bean: Teacher.java: ...

152

mybatis的复杂sql查询

在利用mybatis做查询的时候,一般返回结果用resulttype,这种情况必须是查询的结果在对应 的pojo类中有对应的,一般都是单表查询,但是对于一些复杂的情况,比如需要用到多表查询的时候,resultType不再适用,此时一般用resultMap来表示返回的结果。 resultMap类似于一个hashmap,里面的数据库中的字段与pojo类中的字段的映射, associate的使用--- 一对一关联查询 对象里面包含一个其他对象: 如video是一个pojo类,但是其属性里面..

weixin_45063957的博客 2697

Mybatis查询结果集包含子对象集合用法总结-Mybatis

概述 平时项目中使用mybatis查询数据库,对象结果集可能比较复杂,对象中嵌套对象或者集合。 返回结果集对象project中包含其他子对象(查询的主表与关联子表数据一对一关系)和list集合(查询的主表与关联子表数据一对多关系): 参考 mybatis查找的结果集对象中包含对象和集合的用法 ...

抽象的螺旋 3346

Mybatis中强大的resultMap

本文来说下mybatis中的resultMap,在平时的开发中resultType使用的比较多。但是resultType解决一对一的关系时候比较方便,但是在设计到多对多的时候,使用resultMap比较方面,而且resultMap的功能也是十分强大的。 ...

wh柒八九的博客 439

高级结果映射 MyBatis

映射下面sql语句 <!-- Very Complex Statement --> <select id="selectBlogDetails" resultMap="detailedBlogResultMap"> select B.id as blog_id, B.title as blog_title, B.author_id as blog_author_id, A.id as author_id, A.

malin970824的博客 117

Mybatis的ResultMap的使用总结

resultMap是Mybatis最强大的元素,它可以将查询到的复杂数据(比如查询到几个表中数据)映射到一个结果集当中。 resultMap包含的元素: <!--column不做限制,可以为任意表的字段,而property须为type 定义的pojo属性--> <resultMap id="唯一的标识" type="映射的pojo对象"> <id column="表的主键字段,或者可以为查询语句中的别名字段" jdbcType="字段类型" property="映射pojo

ningmeng666_c的博客 729

Mybatis一对多查询resultMap示例

几个实体说明,get set方法省略 1.最终返回list<CustomersTable> private static final long serialVersionUID = 8405954804351004292L; private String customerId; private String customerName; private L...

dgz41976的博客 308

Mybatis----实现多表查询

一.Mybatis实现多表查询 二.使用<resultMap>查询关联单个对象(N+1)和(联合查询方式)------<association> <resultMap type="teacher" id="mymap"> <!-- 主键使用 id 标签配置映射关系 --> <id column="id" prope...

Miracle_Gaaral的博客 369
上一篇: MyBatis-在分步查询的基础上配置懒加载
下一篇: 最新AI源码-ChatGPT商业运营版系统源码,AI绘画网站系统,TTS & 语音识别对话、文档分析、多模态识图理解
synchronizeOn
博客等级 码龄3年 1193粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值