Mybatis(五)之延迟加载

settings的每个元素的注解说明.xml maven 的 settings.xml 文 件 中每个节点的详细说明。 立即下载

延迟加载又叫懒加载,也叫按需加载。也就是说先加载主信息,在需要的时候,再去加载从信息。
.
在mybatis中,resultMap标签的association标签和collection标签具有延迟加载的功能。

需求

查询订单信息,再按需查找关联的用户信息,即延迟查找关联的信息
1、  创建一个statement来查询订单信息
2、  创建一个statement来查询用户信息

订单映射文件

<resultMap type="com.zyj.mybatis.dto.OrdersExt" id="OrderRstMap">
    <!-- 订单信息 -->
    <id column="id" property="id"/>
    <result column="createtime" property="createtime"/>
    <!-- 用户信息(一对一) -->
    <!-- select:指定关联查询的查询statement(即查询用户的statement的id),然后将查询结果,封装到property属性指定的变量中 -->
    <!-- column:通过column指定的列所查询出的结果,作为select指的statement的入参 -->
    <!-- 注意:如果select指定的statement,入参需要多个值,需要在column中{col1=prop1,col2=prop2} -->
    <association property="user" select="com.zyj.mybatis.mapper.UserMapper.findUserById" column="user_id"></association>
</resultMap>
<!-- 延迟加载 -->
<select id="findOrderByLazyLoding" resultMap="OrderRstMap">
    select * from orders
</select>

用户映射文件

<select id="findUserById" parameterType="int" resultType="com.zyj.mybatis.po.User">
    select * from user where id = #{id}
</select>

测试代码

@Test
public void testFindOrderByLazyLoding() {
    //......
    List<OrdersExt> list = mapper.findOrderByLazyLoding();
    //......
}

结果
这里写图片描述

问题:我们会发现在测试代码中并没有使用订单中的user,但mybatis还是直接查询了user

解决办法:在mybatis的全局配置文件中开启延迟加载
<settings>
    <!-- 开启延迟加载,默认值为false
        延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。 
        特定关联关系中可通过设置`fetchType`属性来覆盖该项的开关状态。
    -->
    <setting name="lazyLoadingEnabled" value="true"/>

    <!-- 设置积极的懒加载,默认是false (true in ≤3.4.1)
        当开启时,任何方法的调用都会加载该对象的所有属性。
        否则,每个属性会按需加载(参考lazyLoadTriggerMethods).
    -->
    <setting name="aggressiveLazyLoading" value="true"/>
</settings>

配置完成后,再执行测试代码,结果只查询了orders
这里写图片描述

修改测试代码

@Test
public void testFindOrderByLazyLoding() {
    //......
    List<OrdersExt> list = mapper.findOrderByLazyLoding();
    for (OrdersExt ordersExt : list) {
        System.out.println(ordersExt.getUser().getId());
    }
    //......
}

运行结果
这里写图片描述

结论:这说明延迟加载起作用,而且是按需加载

从URDF到仿真动画:基于Simulink、Simscape与S-Function的机械臂一体化建模与控制 本文详细介绍了从URDF文件到高保真仿真动画的一体化机械臂建模与控制流程。通过整合Simulink、Simscape与S-Function,构建了包含物理特性的虚拟机械臂模型,并实现了自适应滑模等高级控制算法的嵌入与验证。该流程打通了从机械设计到控制算法验证的闭环,为机器人开发提供了高效的仿真平台。 阅读详情

相关推荐

NBU计算机大二下期末

计算机网络 任课老师:JG (放了一学期的他自己的视频和上了一学期网课没什么区别,甚至不如上网课。。。) 考试题型 填空题10*1 判断题10*1 选择题30*1 简答和计算题30(4题) 讨论题20 强烈建议不要再这门课上花太多时间复习,不然有复习了个寂寞的感觉。。。计网是一页开卷的,一页开卷纸不用写太多,第一他不会考太详细;第二反正最后都要被收走。 填空题、判断题基本看懂了英文就能做的差不多;选择题去网上找点英文题多刷一下问题不大;简答题把书上每章根据他上课的内容在开卷纸上抄下就好,今年是解释check

weixin_45816954的博客 710

mybatis源码学习--mybatis懒加载内部原理

笔者最近研究mybatis比较多,所以打算把最近研究的mybatis的心得写出来,以免以后忘记,算是对这阶段的总结吧 mybatis的懒加载配置什么的我就不详细说了,可以到我的github地址,看我的mybatis-demo  ,里边有详细的例子 我在这里画了一个图,简单的描述一下懒加载的流程,(画的不好。。。) 画的不好,,,可能大家看不懂,

九十的博客 9874

【CAPL实用开发】--- 使用VN1640A测试Busoff快慢恢复

使用VN1640A测试Busoff快慢恢复,包含具体的CAPL代码实现。

LabVIEW、CAPL、python、车载以太网等学习分享,文章正在写 2093

MyBatis 延迟懒加载无效的可能情况

1、调用了默认的触发方法,由于lazyLoadTriggerMethods:指定哪个对象的方法触发一次延迟加载。默认值:equals,clone,hashCode,toString 解决方案: 加上 <setting name="lazyLoadTriggerMethods" value=""/> <settings> <setting name="l...

LyamAL的博客 1279

Dify视觉模型节点避坑指南:我用Qwen2.5-VL做OCR识别时踩过的3个坑(及解决方案)

本文分享了使用Dify平台和Qwen2.5-VL视觉模型进行OCR票据识别时遇到的三个常见问题及解决方案,包括文件变量传递、结构化输出和条件分支判断失效。通过实战经验,帮助开发者优化多模态模型在财务自动化中的应用,提升OCR识别精度和效率。

weixin_29284885的博客 401

计算机组成原理(二)—— 数据的表示与运算

本章目录引言一、数制与编码1.1 进位计数制1.1.1 进制及转换1.1.2 真值、机器数1.2 BCD码1.3 ASCII 码1.4 校验码1.4.1 奇偶校验码1.4.2 海明码1.4.3 CRC循环冗余码二、定点数的表示和运算2.1 定点数的表示2.1.1 无符号2.1.2 有符号(原码、反码、补码、移码)2.2 定点数的运算2.2.1 移位运算2.2.2 加减运算(溢出判断)2.2.3 乘法运算2.2.4 除法运算2.3 强制类型转换2.4 数据的存储和排列三、浮点数的表示和运算3.1 浮点数的表示

S mile0804的博客 7473

mybatis注解方式懒加载失效分析

希望大家支持原创,转载注明原创连接,谢谢

九十的博客 6066

Docker Desktop 从 C 盘迁移到 D 盘的正确方法

本文介绍了三种将Docker数据目录从C盘迁移到D盘的方案。方案1针对WSL2用户,通过导出/导入虚拟磁盘实现迁移;方案2采用软链接方式,适合所有Docker模式;方案3则建议重装Docker到D盘。其中WSL2迁移方案(方案1)最为稳定可靠,推荐使用。文章详细说明了各方案的操作步骤及注意事项,并提供了迁移后常见问题的解决方法,帮助用户彻底解决Docker占用C盘空间的问题。

sg_knight的专栏 2176

MyBaits延迟加载失效解决之道

遇到现象 延迟加载不起作用调用查到对象的toString()方法触发延迟加载 解决办法 延迟加载不起作用的解决办法 在MyBaits的configuration xml文件中的configuration植物中增加以下配置: lazyLoadingEnabled  此属性控制是否启用延迟加载功能,是全局配置,默认值为false,要想在项目中启用延迟

水猴的轨迹 2309

YOLOv12改进入门篇 | 手把手讲解改进模块如何实现高效涨点,以SimAM注意力模块为例

本文记录的是。SimAM注意力模块通过优化能量函数来获得每个神经元的三维权重,而或增加计算复杂度。若是有轻量化需求的小伙伴,无参的注意力模块也许是一个不错的选择。

Limiiiing的博客 2906

把 ABAP 采购订单增强做成一条可控流水线:BAdI ME_PROCESS_PO_CUST 全流程实战

摘要: SAP MM模块的ME_PROCESS_PO_CUST BAdI提供了采购订单全生命周期的增强点,覆盖从ME2*N事务到BAPI调用的各类场景。该接口通过INITIALIZE、OPEN、PROCESS_*系列方法、CHECK等组成完整处理流水线,支持字段控制、业务校验、数据派生等功能。关键注意事项包括:PROCESS_*方法仅在相关对象变更时触发、字段控制需区分参考键与动态规则、避免递归调用等。该BAdI采用面向对象设计,通过IF_PURCHASE_ORDER_*等接口操作采购单据对象,而非直接修改

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 402

MyBatis学习五:延迟加载

一、什么是延迟加载 resultMap可实现高级映射(使用association、collection实现一对一及一对多映射),association、collection具备延迟加载功能。 需求: 如果查询订单并且关联查询用户信息。如果先查询订单信息即可满足要求,当我们需要查询用户信息时再查询用户信息。把对用户信息的按需去查询就是延迟加载。 延迟加载:先从单表查询,需要时再从关联表去关联

mwj_88的专栏 2万+

二十八.国民技术MCU开发之UID获取与应用

在国民NT MCU中均有一个96位和128位的唯一设备标识符,其中UCID128 位, UID 为 96 位。手册中描述的作用是:通常用来做为序列号或作为密码,在编写闪存时,将此唯一标识与软件加解密算法相结合,进一步提高代码在闪存存储器内的安全性,也可用于激活带安全功能的自举程序(SecureBootloader)。UCID 和 UID,遵守国民技术芯片序列号定义,它包含芯片生产及版本相关信息。

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 1676

MyBatis (五)—— 延迟加载

文章目录高级映射一对一关联映射方式一:resultType方式二:resultMap一对多关联映射方式一:resultType方式二:resultMap多对多关联映射延迟加载 高级映射 在学习延迟加载之前,先来学习什么是高级映射吧; 高级映射其实就是数据库表与表之间的关系,那么具体的关系又可以分为三种(拿学生表和班级表做说明): 一对一关系;如学生之于班级 一对多关系;如班级至于学生 多对多关系...

中都 3552

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

mybatis系列:五、延迟加载

mybatis 延迟加载简单概述全局配置延迟加载 简单概述 延迟加载其实就是将数据加载时机推迟,比如推迟嵌套查询的执行时机。在Mybatis中经常用到关联查询,但是并不是任何时候都需要立即返回关联查询结果。比如查询订单信息,并不一定需要及时返回订单对应的产品信息,查询商品分类信息并不一定要及时返回该类别下有哪些产品,这种情况一下需要一种机制,当需要查看时,再执行查询,返回需要的结果集,这种需求在...

laonxs的博客 781

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【MyBatis笔记整理五】延迟加载

延迟加载 也叫惰性加载或懒加载,它的目的就是为了提高程序的运行效率,它其实是通过尽量少执行 SQL 语句来提升效率的。

小异常的博客 530

mybatis学习五之延迟加载

1.延迟加载    1.1 association 和collection都有延迟加载的功能,(collection也可以实现,下面介绍association,语法一样)          延迟加载: 先从单表查询,需要时再从关联表去查询提高数据库性能,只有在调用get方法获取的时候,association的查询才会进行,不然的话就只进行单表的    1.2 使用association

Pruett的博客 355

MyBatis(五)关于MyBatis中延迟加载和缓存

一.延迟加载 1.什么是延迟加载? 延迟加载(lazy load)是(也称为懒加载),延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作 可以简单理解为,只有在使用的时候,才会发出sql语句进行查询。 2.延迟加载分三种 (1)直接加载(执行完主加载后马上执行关联对象的查询) lazyLoadingEnable...

weixin_33809981的博客 156

iptables与客户端防火墙:连接故障的七层诊断法

网络连接问题本质是TCP/IP协议栈中数据包在传输路径上的异常拦截或丢弃,其核心原理涉及物理层至应用层的多节点协同。iptables作为Linux内核级包过滤引擎,通过规则链(INPUT/FORWARD/OUTPUT)对数据包执行ACCEPT/DROP/REJECT决策;而Windows Defender Firewall、ufw等客户端防火墙则构成另一重出站策略控制。二者共同构成连接建立失败的最主要可干预边界,技术价值在于提供细粒度流量管控能力,支撑高可用服务部署与安全合规要求。典型应用场景覆盖FTP被动

weixin_33858485的博客 418

MyBatis基础应用(五)——MyBatis立即加载和延迟加载

立即加载就是不管用不用,只要一调用方法,马上发起查询。通常在一对一得多表查询中使用之前讲解的mybatis通过使用resultMap得关联映射实现多表查询就是立即加载,此处我们可以简化一下之前讲解的多表查询IAccountDao的mapper文件设置association标签里面的属性值来实现多表之间的关联查询property:关联对象在account实体类中的属性column:关联对象的相关属性在account数据表中的字段名称javaType:propert值的类(全称,可以取别名)

路漫漫其修远兮,吾将上下而求索。小手点一波关注进阶的李仙桎,我们一起携手进步, 412

Mybatis知识总结(五):延迟加载,缓存 和Mybatis的注解开发

一: Mybatis 延迟加载策略 上篇文章中讲述了Mybatis 中一对一,一对多,多对多关系的配置及实现,可以实现对象的关联查询。而在实际开发过程中很多时候我们并不需要总是在加载用户信息时就一定要加载他的账户信息。 此时就是我们所说的延迟加载。 1.1 何为延迟加载? 延迟加载:        就是在需要用到数据时才进行加载...

洺润Star的博客 239

MyBatis 系列五 之 延迟加载、一级缓存、二级缓存设置

MyBatis的延迟加载、一级缓存、二级缓存设置 首先我们必须分清延迟加载的适用对象 延迟加载 MyBatis中的延迟加载,也称为懒加载,是指在进行关联查询时,按照设置延迟加载规则推迟对关联对象的select查询。延迟加载可以有效的减少数据库压力。 注意:MyBatis的延迟加载只是对关联对象的查询有延迟设置,对于主加载对象都是直接执行查询语句的。 MyBatis根据对关联对象查询的...

weixin_30376083的博客 108

Mybatis 学习(五)——延迟加载与分步查询

文章目录一、分步查询二、延时加载 本篇博客主要讲的是延迟加载,也叫懒加载,但是懒加载往往与分布查询同时使用,作为背景知识我们也介绍一下分布查询 一、分步查询 分布查询通常应用于关联表查询,通常我们关联查询是进行多表联合查询,分布查询时先查询主表,然后通过主表得到的信息将参数传递给关联表,查询关联表的信息。 从代码层面上来说: 关联表能简化代码编写逻辑,减小代码编写难度 从功能层面上来说:关联表只需...

Alyson_jm的博客 562

MyBatis 性能优化(五):延迟加载 + 一级缓存原理与实战

不管用不用关联数据,一次性把所有数据全部查询出来。例如:查询用户信息时,立刻把该用户的所有账户信息也一起查询出来。按需加载查询主表数据时,只查主表真正使用关联数据时,才发送 SQL 查询从表。

2201_75940978的博客 372

Mybatis学习(五)————— 延迟加载和缓存机制(一级二级缓存)

一、延迟加载     延迟加载就是懒加载,先去查询主表信息,如果用到从表的数据的话,再去查询从表的信息,也就是如果没用到从表的数据的话,就不查询从表的信息。所以这就是突出了懒这个特点。真是懒啊。     Mybatis中resultMap可以实现延迟加载     1.1、查询订单信息,延迟加载用户信息,一对一关系。        1.1.1、开启延迟加载           全局配置文件...

weixin_33918114的博客 108
上一篇: Mybatis(四)之动态SQL
下一篇: Mybatis(六)之缓存
章 鱼
博客等级 码龄10年 203粉丝 105原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值