mybatis 延迟加载

news2024/11/15 14:05:03

MyBatis的延迟加载(Lazy Loading)是一种优化技术,用于在需要时才加载关联对象或集合,从而提高性能和效率。以下是对MyBatis延迟加载的详细介绍:

延迟加载的基本概念
延迟加载是指在第一次访问对象的属性时才加载该对象的数据,而不是在对象创建时就立即加载所有的数据。这样可以避免不必要的数据库访问,减少系统的开销和提高性能。
在这里插入图片描述
在这里插入图片描述

<mapper namespace="com.example.UserMapper">
    <resultMap id="userMap" type="com.example.User">
        <id property="id" column="id"/>
        <result property="username" column="username"/>
        <association property="address" column="address_id" javaType="com.example.Address" fetchType="lazy">
            <id property="id" column="id"/>
            <result property="city" column="city"/>
        </association>
    </resultMap>

    <select id="selectUser" resultMap="userMap">
        SELECT * FROM user WHERE id = #{id}
    </select>
</mapper>


在上面的示例中,User类中的address属性会被设置为延迟加载。

public class MyBatisExample {
    public static void main(String[] args) {
        SqlSessionFactory sqlSessionFactory = MyBatisUtil.getSqlSessionFactory();
        try (SqlSession session = sqlSessionFactory.openSession()) {
            UserMapper userMapper = session.getMapper(UserMapper.class);
            User user = userMapper.selectUser(1);
            System.out.println(user.getUsername()); // 此时不会加载address
            System.out.println(user.getAddress().getCity()); // 访问address时才会加载address
        }
    }
}

在这里插入图片描述
aggressiveLazyLoading属性:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

G24代刷卡鉴权方案

PICK_G24 产品型号 PICK_G24 尺寸 124x90x12mm&#xff08;不含安装支架&#xff09; 屏幕尺寸 4.2 inch 显示技术 电子墨水屏显示 显示区域面积 (mm) 84.8(H) x 63.6(V) 分辨率 400*300 像素密度 120dpi 显示颜色 黑/白 外观颜色 白色&灰外圏 按键 …

关于 Mac 系统 .DS_store 文件的起源

原文&#xff1a;Arno - 2006.10.01 &#xff08;前排提醒&#xff1a;可以在 .gitignore 中添加 .DS_Store&#xff0c;否则 git 仓库会存储这个和项目无关的文件。&#xff09; 如果你是 Mac 用户&#xff0c;曾经将文件从 Mac 传输到 Windows&#xff0c;那么可能对 .DS_S…

跟极光同频共振?!VELO Angel Ride坐垫,在挪威一起踏上的绿色征途!

如果可以选择&#xff0c;你喜欢徒步旅行还是骑脚踏车呢?      在挪威那片被午夜阳光亲吻的土地上&#xff0c;每一次骑行都是一场与自然对话的盛宴。维乐Angel Ride坐垫&#xff0c;作为环保与骑行舒适度的完美结合&#xff0c;携手每一位探索者&#xff0c;在这片北欧仙…

如何把excel翻译成中文?简单又实用的excel翻译器分享

自打步入职场之后&#xff0c;我才逐渐发现原来处理多语言的Excel文档现已经成为了职场人经常需要面对的挑战~传统的手动翻译不仅耗时费力&#xff0c;还容易出错&#xff0c;尤其是在面对大量数据和复杂的公式时&#xff0c;更是令人头疼。 幸运的是&#xff0c;后来被我发现…

生成图质量评价

1. RichHF-18K 论文地址 解决问题&#xff1a; 如何对生成图质量进行算法评价&#xff0c;以优化图片质量&#xff0c;提升模型生成能力 解决思路&#xff1a; 参考多模态模型&#xff0c;构建评价模型&#xff0c;从7个维度分三个分支对生成图进行测评&#xff1a; Tips&…

【鸿蒙学习笔记】交互事件

官方文档&#xff1a;交互事件 目录标题 分类交互事件-触屏交互事件-手势事件单一手势 分类 交互事件-触屏 在组件上按下(Down) , 滑动(Move) , 抬起(up)时触发的回调事件。包括点击事件、触摸事件和拖拽事件 交互事件-手势事件 在手机上点击打开应用 , 长按后拖动应用 , 这…

idea中的块映射中的子元素无效

在yml文件中&#xff0c;出现块映射中的子元素无效&#xff0c;如图&#xff1a; 在YAML文件中&#xff0c;通常需要在键和值之间添加空格&#xff0c;以确保文件的可读性和正确解析。一些YAML解析器可能要求在冒号后面必须有空格才能正确解析文件。如果不加空格&#xff0c;解…

eventFilter事件过滤器

通过使用eventFilter 事件过滤器&#xff0c;实现QLabel的 Enter、Leave 、MouseButtonPress、MouseButtonDblClick、MouseButtonRelease EventFilterExample.h #ifndef EVENTFILTEREXAMPLE_H #define EVENTFILTEREXAMPLE_H#include <QWidget>namespace Ui { class Event…

C++内存的一些知识点

一、内存分区 在C中&#xff0c;内存主要分为以下几个区域&#xff1a; 代码区&#xff1a;存放函数体的二进制代码。 全局/静态存储区&#xff1a;存放全局变量和静态变量&#xff0c;这些变量在程序的整个运行期间都存在。常量存储区&#xff1a;存放常量&#xff0c;这些值…

聚观早报 | 2025款比亚迪海豚上市;小米15系列防水细节

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 7月9日消息 2025款比亚迪海豚上市 小米15系列防水细节 荣耀Magic V3将更轻薄 真我GT6通信细节 Apple Watch SE将…

修改服务器挂载目录

由于我们的项目通常需要挂载一个大容量的数据盘来存储文件数据&#xff0c;所以我们每台服务器都需要一个默认的挂载目录来存放这些数据&#xff0c;但是由于我们的误操作&#xff0c;导致挂载目录名字建错了&#xff0c;这时候后端就读不到挂载目录了&#xff0c;那我们我们的…

layui项目中的layui.define、layui.config以及layui.use的使用

第一步:创建一个layuiTest项目&#xff0c;结构如下 第二步&#xff1a;新建一个test.js,利用layui.define定义一个模块test,并向外暴露该模块&#xff0c;该模块里面有两个方法method1和method2. 第三步&#xff1a;新建一个test.html&#xff0c;在该页面引入layui.js&#x…

能见度监测系统—高精度的能见度测量

TH-NJD10能见度监测系统是一种用于实时监测和测量大气中能见度情况的系统&#xff0c;广泛应用于交通运输、气象观测、环境监测等领域。能见度监测系统通过安装在特定位置的监测器和传感器&#xff0c;实时采集大气中的光散射、光衰减等参数&#xff0c;经过计算处理后得出能见…

六西格玛培训:打破瓶颈,提升效率——张驰咨询

在当今这个竞争激烈的商业环境中&#xff0c;企业要想在市场中脱颖而出&#xff0c;就必须不断提高产品和服务的质量&#xff0c;同时优化流程以降低成本。六西格玛&#xff0c;作为一种旨在减少变异、提高过程能力的管理策略&#xff0c;正逐渐成为企业提升竞争力的关键工具。…

LeetCode 算法:腐烂的橘子 c++

原题链接&#x1f517;&#xff1a;腐烂的橘子 难度&#xff1a;中等⭐️⭐️ 题目 在给定的 m x n 网格 grid 中&#xff0c;每个单元格可以有以下三个值之一&#xff1a; 值 0 代表空单元格&#xff1b;值 1 代表新鲜橘子&#xff1b;值 2 代表腐烂的橘子。 每分钟&#…

【源码+文档+调试讲解】文物管理系统

摘 要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识&#xff0c;科学化的管理&#xff0c;使信息存…

浅谈重要组件Beanshell

浅谈重要组件Beanshell BeanShell是JMeter中一个非常实用的组件&#xff0c;它允许用户通过Java-like的脚本语言执行自定义逻辑&#xff0c;从而极大地扩展了JMeter的功能。本文将详细介绍BeanShell的使用方法、常见用途、以及其在JMeter中的具体应用场景。 BeanShell概述 Bea…

使用vllm部署大语言模型

vLLM是一个快速且易于使用的库&#xff0c;用于LLM&#xff08;大型语言模型&#xff09;推理和服务。通过PagedAttention技术&#xff0c;vLLM可以有效地管理注意力键和值内存&#xff0c;降低内存占用和提高计算效率。vLLM能够将多个传入的请求进行连续批处理&#xff0c;从而…

Java语言程序设计——篇二(2)

Java语言基础 运算符与表达式运算符1、算术运算符2、关系运算符3、逻辑运算符&#xff08; &&、||、 !、&、| 、^&#xff09;4、位运算符&#xff08; >>、<<、>>>、&、|、^、~&#xff09;5、赋值运算符6、条件运算符7、字符串运算符8、…

基于Tkinter GUI库的ARP欺骗攻击工具

基于Tkinter GUI库的ARP欺骗攻击工具 程序提供了一个简单易用的GUI界面,让用户可以方便地进行ARP欺骗攻击。但ARP欺骗是一种黑客攻击手段,可能会造成严重的网络安全问题,请谨慎使用,仅限于合法的网络安全测试和研究目的。 这个ARP欺骗工具需要用户输入目标主机的IP和MAC地址,…