当前位置: 首页 > news >正文

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>

相关文章:

Mybatis学习笔记:延迟加载

本文是自己的学习笔记&#xff0c;主要参考以下资料 - 马士兵教育 1、延迟加载2、开启延迟加载2.1、配置信息2.2、查询语法2.2.1、前置条件2.2.2、xml语法2.2.3、总结 1、延迟加载 延迟加载是用于优化一对多或者多对多的查询。 比如员工表和部门表&#xff0c;员工表left jo…...

蓝桥杯题练习:平地起高楼

题目要求 function convertToTree(regions, rootId "0") {// TODO: 在这里写入具体的实现逻辑// 将平铺的结构转化为树状结构&#xff0c;并将 rootId 下的所有子节点数组返回// 如果不存在 rootId 下的子节点&#xff0c;则返回一个空数组}module.exports convert…...

我愿意启动价值流

如前文Flow近佛&#xff0c;人生就是一个价值流。让价值流动起来&#xff0c;Get Things Flow是我们的方法论。然而&#xff0c;还欠上帝的一脚&#xff0c;让价值流启动起来。这个启动&#xff0c;就是我愿意。 我愿意的反面是被烦恼包裹、裹挟、包围、无法摆脱。乐莹离家前就…...

排序算法1:冒泡排序、快速排序、插入排序

排序算法&#xff1a;交换类排序&#xff0c;插入类排序、选择类排序、归并类排序 交换类排序&#xff1a;冒泡排序、快速排序 一、冒泡排序 #include <stdio.h> #include <stdlib.h> #include <time.h> typedef int ElemType; typedef struct{ElemType *e…...

Vant Weapp

Vant Weapp - 轻量、可靠的小程序 UI 组件库 van-radio name 是一个字符串&#xff0c;无法传对象的处理 以及 mpx 多层嵌套 for 循环处理 <viewwx:for"{{questionList}}"wx:for-item"question" // item 重命名wx:for-index"questionIndex"…...

无人机精准定位技术,GPS差分技术基础,RTK原理技术详解

差分GPS的基本原理 差分GPS&#xff08;Differential GPS&#xff0c;简称DGPS&#xff09;的基本原理是利用一个或多个已知精确坐标的基准站&#xff0c;与用户&#xff08;移动站&#xff09;同时接收相同的GPS卫星信号。由于GPS定位时会受到诸如卫星星历误差、卫星钟差、大…...

java面试:elasticsearch

文章目录 引言I 索引1.1 覆盖索引1.2 elasticsearch 面试题1.3 Google的搜索本质II elasticsearch的倒叙索引2.1 发展历史2.2 倒排索引2.3 倒排序的搜索流程III elasticsearch的基础概念IV 创建索引库4.1 步骤4.2 mapping映射4.3 ik分词器...

GO语言学习笔记(与Java的比较学习)(三)

函数 按值传递&#xff08;call by value&#xff09; 按引用传递&#xff08;call by reference&#xff09; Go 默认使用按值传递来传递参数&#xff0c;也就是传递参数的副本。函数接收参数副本之后&#xff0c;在使用变量的过程中可能对副本的值进行更改&#xff0c;但不…...

如何用Python3自撰一个简单的后端框架

不使用任何现有的后端框架来创建一个Python 3的后端框架是一个相当复杂的任务,因为它涉及到许多Web开发的基础知识,比如HTTP协议处理、路由、中间件、请求和响应处理等。然而,我们可以从最基本的概念开始,逐步构建一个简单的后端框架。 以下是一个非常基础的指南,用于创建…...

使用pyannote-audio实现声纹分割聚类

使用pyannote-audio实现声纹分割聚类 # GitHub地址 https://github.com/MasonYyp/audio1 简单介绍 pyannote.audio是用Python编写的用于声纹分割聚类的开源工具包。在PyTorch机器学习基础上&#xff0c;不仅可以借助性能优越的预训练模型和管道实现声纹分割聚类&#xff0c;还…...

防御保护:防火墙内容安全

一、IAE&#xff08;Intelligent Awareness Engine&#xff09;引擎 二、深度检测技术(DFI和DPI&#xff09; 1.DPI – 深度包检测技术 DPI主要针对完整的数据包&#xff08;数据包分片&#xff0c;分段需要重组&#xff09;&#xff0c;之后对数据包的内容进行识别。&#x…...

uni-app webview 打开baidu.com

在uni-app中&#xff0c;你可以使用web-view组件来打开外部网页&#xff0c;比如百度首页。以下是一个简单的示例代码&#xff0c;展示了如何在uni-app中使用web-view组件打开百度首页&#xff1a; <template> <view> <web-view :src"baiduUrl">&l…...

【C#】SixLabors.ImageSharp和System.Drawing两者知多少

欢迎来到《小5讲堂》 大家好&#xff0c;我是全栈小5。 这是《C#》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对知识点的理解和掌握。…...

总是 -bash: gomobile: 命令未找到

总是 -bash: gomobile: 命令未找到 问题描述 我的项目是/Users/$user/go/src/abc.com/project 当我尝试在 /Users/GaryChan/go/src/abc.com/project/sdk 并运行: export ANDROID_HOME/Users/$user/Library/Android/sdk/ndk-bundle/gomobile bind -targetandroid abc.com/p…...

day27【LeetCode】454. 四数相加 II

day27【LeetCode】454. 四数相加 II 1.题目描述 附上题目链接&#xff1a;四数相加 II 给你四个整数数组 nums1、nums2、nums3 和 nums4 &#xff0c;数组长度都是 n &#xff0c;请你计算有多少个元组 (i, j, k, l) 能满足&#xff1a; 0 < i, j, k, l < nnums1[i] …...

UE5 UE4 不同关卡使用Sequence动画

参考自&#xff1a;关于Datasmith导入流程 | 虚幻引擎文档 (unrealengine.com) 关卡中的Sequence动画序列&#xff0c;包含特定关卡中的Actor的引用。 将同一个Sequcen动画资源放入其他关卡&#xff0c;Sequence无法在新关卡中找到相同的Actor&#xff0c;导致报错。 Sequen…...

【JAVA日志】关于日志系统的架构讨论

目录 1.日志系统概述 2.环境搭建 3.应用如何推日志到MQ 4.logstash如何去MQ中取日志 5.如何兼顾分布式链路追踪 1.日志系统概述 关于日志系统&#xff0c;其要支撑的核心能力无非是日志的存储以及查看&#xff0c;最好的查看方式当然是实现可视化。目前市面上有成熟的解决…...

云计算与边缘计算:有何不同?

公共云计算平台可以帮助企业充分利用全球服务器来增强其私有数据中心。这使得基础设施能够扩展到任何位置&#xff0c;并有助于计算资源的灵活扩展。混合公共-私有云为企业计算应用程序提供了强大的灵活性、价值和安全性。 然而&#xff0c;随着分布在全球各地的实时人工智能应…...

「连载」边缘计算(二十)02-23:边缘部分源码(源码分析篇)

&#xff08;接上篇&#xff09; EdgeCore之devicetwin 前面对EdgeCore组件的edged功能模块进行了分析&#xff0c;本节对EdgeCore组件的另一个功能模块devicetwin进行剖析&#xff0c;包括devicetwin的struct调用链剖析、devicetwin的具体逻辑剖析、devicetwin的缓存机制剖析…...

Swagger接口文档管理工具

Swagger 1、Swagger1.1 swagger介绍1.2 项目集成swagger流程1.3 项目集成swagger 2、knife4j2.1 knife4j介绍2.2 项目集成knife4j 1、Swagger 1.1 swagger介绍 官网&#xff1a;https://swagger.io/ Swagger 是一个规范和完整的Web API框架&#xff0c;用于生成、描述、调用和…...

相控阵天线设计避坑指南:阵元间距、扫描角与栅瓣的那些事儿

相控阵天线设计实战&#xff1a;从阵元间距到波束扫描的工程陷阱解析 相控阵天线技术正在重塑现代雷达和通信系统的设计范式。不同于传统机械扫描天线&#xff0c;相控阵通过电子控制实现波束的快速转向与重构&#xff0c;这种灵活性使其在5G基站、卫星通信和军用雷达等领域展现…...

Applite:macOS上免费的Homebrew图形界面终极解决方案

Applite&#xff1a;macOS上免费的Homebrew图形界面终极解决方案 【免费下载链接】Applite User-friendly GUI macOS application for Homebrew Casks 项目地址: https://gitcode.com/gh_mirrors/ap/Applite 还在为复杂的终端命令而烦恼吗&#xff1f;Applite这款创新的…...

Pixel Script Temple 数据可视化:Matlab风格图表像素化生成应用

Pixel Script Temple 数据可视化&#xff1a;Matlab风格图表像素化生成应用 1. 引言&#xff1a;当科学数据遇上像素艺术 科研工作者经常面临一个两难选择&#xff1a;一方面需要精确呈现复杂数据&#xff0c;另一方面又希望图表能吸引读者注意。传统Matlab生成的图表虽然专业…...

Phi-3-vision-128k-instruct嵌入式开发实战:从电路图到驱动代码的智能辅助

Phi-3-vision-128k-instruct嵌入式开发实战&#xff1a;从电路图到驱动代码的智能辅助 1. 嵌入式开发的痛点与智能解决方案 在传统嵌入式开发流程中&#xff0c;工程师需要花费大量时间在硬件与软件的衔接环节。从阅读芯片手册、理解电路原理图&#xff0c;到编写底层驱动代码…...

从理论到实践:在PyTorch 2.8镜像中复现经典算法论文

从理论到实践&#xff1a;在PyTorch 2.8镜像中复现经典算法论文 1. 引言&#xff1a;算法复现的价值与挑战 复现经典论文算法是每个深度学习研究者的必修课。最近我在星图GPU平台上使用PyTorch 2.8镜像&#xff0c;尝试复现了一篇关于高效Transformer的论文&#xff0c;整个过…...

Phi-3-Mini-128K实战案例:法律合同长文本分析+关键条款提取效果展示

Phi-3-Mini-128K实战案例&#xff1a;法律合同长文本分析关键条款提取效果展示 1. 引言&#xff1a;当小模型遇上大合同 想象一下&#xff0c;你面前摆着一份长达50页的投资协议&#xff0c;里面密密麻麻全是法律条文。你需要快速找到其中的保密条款、违约责任和争议解决方式…...

Ostrakon-VL-8B嵌入式设备部署展望:轻量化与边缘计算

Ostrakon-VL-8B嵌入式设备部署展望&#xff1a;轻量化与边缘计算 最近和几个做嵌入式开发的朋友聊天&#xff0c;大家不约而同地提到了同一个问题&#xff1a;现在的大模型能力是强&#xff0c;但动辄几十上百亿的参数&#xff0c;怎么才能塞进资源有限的边缘设备里&#xff1…...

如何通过Winhance诊断并解决Windows系统性能瓶颈?从问题定位到实战优化的完整指南

如何通过Winhance诊断并解决Windows系统性能瓶颈&#xff1f;从问题定位到实战优化的完整指南 【免费下载链接】Winhance-zh_CN A Chinese version of Winhance. C# application designed to optimize and customize your Windows experience. 项目地址: https://gitcode.com…...

渐进式Web应用:离线缓存与后台同步的实现

渐进式Web应用&#xff1a;离线缓存与后台同步的实现 在移动互联网时代&#xff0c;用户对Web应用的体验要求越来越高&#xff0c;而渐进式Web应用&#xff08;PWA&#xff09;凭借其接近原生应用的性能和可靠性成为热门技术。其中&#xff0c;离线缓存与后台同步是PWA的两大核…...

“这个PR能合吗?”——SITS2026专家现场演示:实时接入GitHub Actions的AI影响分析沙箱(限免通道将于2024Q3关闭)

第一章&#xff1a;SITS2026专家&#xff1a;AI代码变更影响分析 2026奇点智能技术大会(https://ml-summit.org) 在大规模软件系统持续演进过程中&#xff0c;AI驱动的自动化代码变更&#xff08;如LLM辅助重构、智能补丁生成&#xff09;正显著提升开发效率&#xff0c;但其…...