Mybatis学习笔记:延迟加载

本文是自己的学习笔记,主要参考以下资料

- 马士兵教育

  • 1、延迟加载
  • 2、开启延迟加载
    • 2.1、配置信息
    • 2.2、查询语法
      • 2.2.1、前置条件
      • 2.2.2、xml语法
      • 2.2.3、总结

1、延迟加载

延迟加载是用于优化一对多或者多对多的查询。

比如员工表和部门表,员工表left join部门表,一条SQL查出所有数据。

但有时候部门表的使用频率很低,这时候我们就可以使用延迟加载,先查出员工数据,等需要用到部门数据的时候再执行剩下的查询。

2、开启延迟加载

2.1、配置信息

延迟加载与这两个属性有关。

  • lazyLoadingEnabled: ture|false,true开启延迟加载。与aggressiveLoadingEnabled是相反的属性。
  • aggressiveLoadingEnabled: ture|false,true开启全加载。与lazyLoadingEnabled是相反的属性。

mybatis.xml中,configuration标签下这样设置可开启全局延迟加载。

<configuration><settings><setting name="lazyLoadingEnabled" value="true"/><setting name="aggressiveLoadingEnabled" value="false"/></settings>
</configuration>

2.2、查询语法

2.2.1、前置条件

现有两个POJO,Emp--员工,Dept--部门。两者的类如下,数据库字段同名。

public class Dept {private Integer deptid;private String dname;
}
public class Emp {private Integer id;private String name;private Integer age;private Dept dept;
}

2.2.2、xml语法

现在是查员工表,left join出部门表。部门数据延迟加载。

我们不能直接使用left join关联数据,因为数据库语句一执行就会查出所有数据,不会收到lazyLoadingEnabled的影响。

我们需要将原来的left join拆成两个查询,然后在配置中关联。这样查询过程就受mybatis的控制。

需要拆成两个查询一个是查询员工表,另一个是查询部门表。

<select id="queryDeptById">select * from t_dept where deptid = #{deptid}
</select><select id="queryEmp" resultMap="baseMap1">select * from t_emp
</select>

之后定义返回值,也是在这里定义关联关系。

<resultMap id="baseMap" type="emp"><id column="id" property="id"/><result column="name" property="name"/><result column="age" property="age"/><association property="dept" javaType="Dept" column="deptId" select="queryDeptById"><id column="deptid" property="deptid"/><result column="dname" property="dname"/></association>
</resultMap>

2.2.3、总结


<resultMap id="baseMap" type="emp"><id column="id" property="id"/><result column="name" property="name"/><result column="age" property="age"/><association property="dept" javaType="Dept" column="deptId" select="queryDeptById"><id column="deptid" property="deptid"/><result column="dname" property="dname"/></association>
</resultMap><select id="queryDeptById">select * from t_dept where deptid = #{deptid}
</select><select id="queryEmp" resultMap="baseMap1">select * from t_emp
</select>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/702436.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

物奇ENC算法开关接口修改方法

物奇ENC算法开关接口修改 是否需要申请加入数字音频系统研究开发交流答疑群(课题组)&#xff1f;可加我微信hezkz17, 本群提供音频技术答疑服务&#xff0c;群赠送语音信号处理降噪算法&#xff0c;蓝牙耳机音频&#xff0c;DSP音频项目核心开发资料, 1 配置工具事件接口 2 代…

LeetCode 热题 100 | 二叉树(四)

目录 1 114. 二叉树展开为链表 2 105. 从前序与中序遍历序列构造二叉树 3 437. 路径总和 III 菜鸟做题&#xff08;即将返校版&#xff09;&#xff0c;语言是 C 1 114. 二叉树展开为链表 题眼&#xff1a;展开后的单链表应该与二叉树 先序遍历 顺序相同。 而先序遍历就…

【编译原理】用Python实现LR(0)语法分析

实验内容 对于给定的如下文法&#xff0c;编写调试一个上下文无关文法的LR(0)分析程序。 文法G’为&#xff1a; S → E S\to E S→E E → a A E\to aA E→aA E → b B E \to bB E→bB A → c A A\to cA A→cA A → d A\to d A→d B → c B B\to cB B→cB B → d B\to …

8.6 OpenGL纹理和采样器:备用纹理图像规范命令

备用纹理图像规范命令 Alternate Texture Image Specification Commands 二维和一维纹理图像也可以使用直接从帧缓冲区获取的图像数据进行指定&#xff0c;并且可以重新指定现有纹理图像的矩形子区域。 定义一个二维纹理图像 void glCopyTexImage2D( enum target, int level…

03|count(*)查询优化

count(*) count(1) count(字段) count(主键 id) 字段有索引&#xff1a;count(*)≈count(1)>count(字段)>count(主键 id) 字段有索引&#xff0c;count(字段)统计走二级索引&#xff0c;二级索引存储数据比主键索引少&#xff0c;所以count(字段)>count(主键 id) 字段…

网购商城系统源码 积分兑换商城系统源码 独立后台附教程

应用介绍 本文来自&#xff1a;网购商城系统源码 积分兑换商城系统源码 独立后台附教程 - 源码1688 简介&#xff1a; 网购商城系统源码 积分兑换商城系统源码 独立后台附教程 测试环境&#xff1a;NginxPHP7.0MySQL5.6thinkphp伪静态 图片&#xff1a;

软件实际应用实例,茶楼收银软件管理系统操作流程,茶室计时计费会员管理系统软件试用版教程

软件实际应用实例&#xff0c;茶楼收银软件管理系统操作流程&#xff0c;茶室计时计费会员管理系统软件试用版教程 一、前言 以下软件以 佳易王茶社计时计费管理系统软件V17.9为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、计时计费&…

JavaWeb——007MYSQL(DQL多表设计)

# 数据库开发-MySQL 一级目录二级目录三级目录 1. 数据库操作-DQL1.1 介绍1.2 语法1.3 基本查询1.4 条件查询1.5 聚合函数1.6 分组查询1.7 排序查询1.8 分页查询1.9 案例1.9.1 案例一1.9.2 案例二 2. 多表设计2.1 一对多2.1.1 表设计2.1.2 外键约束 2.2 一对一2.3 多对多2.4 案…

遥感影像目标检测:从CNN(Faster-RCNN)到Transformer(DETR)

我国高分辨率对地观测系统重大专项已全面启动&#xff0c;高空间、高光谱、高时间分辨率和宽地面覆盖于一体的全球天空地一体化立体对地观测网逐步形成&#xff0c;将成为保障国家安全的基础性和战略性资源。未来10年全球每天获取的观测数据将超过10PB&#xff0c;遥感大数据时…

《The Art of InnoDB》第二部分|第4章:深入结构-磁盘结构-撕裂的页面(doublewrite buffer)

4.5 撕裂的页面 目录 4.5 撕裂的页面 4.5.1 双写缓冲区的作用 4.5.2 双写缓冲区的结构 4.5.3 双写缓冲区与Redolog的协同工作流程 4.5.2 双写缓冲区写入时机 4.5.3 禁用双写缓冲区 4.5.4 小结 未完待续... 上文我们学习了redo log的结构和其工作原理,它是一个…

vue或webpack加载highcharts与highcharts-3d

highcharts与highcharts-3d下载 https://jshare.com.cn/demos/hhhhiG 点击对应的文件可打开&#xff0c;复制代码到&#xff08;创建一个同名文件&#xff09;里面&#xff1b;放到项目对应目录下 引入 两种引入 highcharts.js 方法皆可用&#xff1b;注意 highcharts-3d 引入…

超全整理,自动化测试-YAML 配置文件深入解析(详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、YAML详情 YAM…

求解算式666

题目描述 现在有这样一个算式&#xff1a;2*xyn&#xff0c;x和y均为非负数&#xff0c;其中x是奇数&#xff0c;y是偶数&#xff0c;现在给你整数n&#xff0c;请你求出所有符合条件的x&#xff0c;y的数值&#xff0c;从小到大。若无符合条件的数值&#xff0c;则输出"…

Dear ImGui的UE5.3集成实践

Dear ImGui一直较为火热&#xff0c;这是一个调试使用并且可以响应快速迭代的Gui库&#xff0c;甚至可以做到在任何代码块中调用API即显示。如果你想更多的了解一下可访问其官方网站&#xff1a;https://www.dearimgui.org/ 那么本文就来在UE5中尝试踩坑使用它。 UE4.26版本 …

[引擎开发] 深入C++模板编程

[本文大纲] 引言 模板实例化 隐式实例化 显式实例化 模板具体化 显式具体化 部分具体化 函数重载和具体化 类型推断 隐式类型转换 支持的类型转换 引用和const 通用引用、引用折叠和完美转发 …

探索LightGBM:异常值处理与鲁棒建模

导言 异常值是数据中的特殊点&#xff0c;可能导致模型的不准确性和不稳定性。在使用LightGBM进行建模时&#xff0c;处理异常值是非常重要的一步&#xff0c;以确保模型的鲁棒性和可靠性。本教程将详细介绍如何在Python中使用LightGBM进行异常值处理和鲁棒建模&#xff0c;并…

RDMA内核态函数ib_post_recv()源码分析

接上文&#xff0c;上文分析了内核rdma向发送队列添加发送请求的函数ib_post_send&#xff0c;本文分析一下向接收队列添加接收请求的函数ib_post_recv。其实函数调用流程与上文类似&#xff0c;不再重复说明&#xff0c;可参考链接。 函数调用过程 最终会调用到这个函数 下面…

pytorch -- DataLoader

定义 提供了给定数据集的迭代器 torch.utils.data.DataLoader(dataset, batch_size1, 每次拿多少数据 shuffleNone, 是否打乱 samplerNone, batch_samplerNone, num_workers0, 多进程&#xff08;加载数据时采用&#xff09;默认是0,使用主进程加载数据 collate_fnNone, p…

【SpringBoot3】Spring Security使用mybatis-plus存储用户角色权限,实现动态权限处理

注&#xff1a;本文基于Spring Boot 3.2.1 以及 Spring Security 6.2.1 相关文章 【SpringBoot3】Spring Security 核心概念 【SpringBoot3】Spring Security 常用注解 【SpringBoot3】Spring Security 详细使用实例&#xff08;简单使用、JWT模式&#xff09; 一、使用mybat…

【5G NR】【一文读懂系列】移动通讯中使用的信道编解码技术-LDPC编码介绍(一)

概述 低密度校验码&#xff08;LDPC码&#xff09;是一种前向纠错码&#xff0c;LDPC码最早在20世纪60年代由Gallager在他的博士论文中提出&#xff0c;但限于当时的技术条件&#xff0c;缺乏可行的译码算法&#xff0c;此后的35年间基本上被人们忽略&#xff0c;其间由Tanner…