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

mybatis 延迟加载

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()); // 此时不会加载addressSystem.out.println(user.getAddress().getCity()); // 访问address时才会加载address}}
}

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

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

http://www.lryc.cn/news/398965.html

相关文章:

  • 使用QT5.14.2开发族谱管理软件过程记录
  • 【QT】布局管理器
  • 兼容问题---ios底部的安全距离css设置
  • python JSON Lines (JSONL)的保存和读取;jsonl的数据保存和读取,大模型prompt文件保存常用格式
  • Spring Boot中@Async注解的使用及原理 + 常见问题及解决方案
  • ubuntu基于cmakelist的Qt工程,如何将图片打包进二进制程序
  • Spring的启动流程refresh方法、配置类解析流程@Component、@Configuration、@Import、@Bean
  • 运算放大器(2)
  • 智能优化算法之模拟退火算法SA
  • 同时用到,网页,java程序,数据库的web小应用
  • 星环科技推出语料开发工具TCS,重塑语料管理与应用新纪元
  • 【ARM】MDK安装ARM_compiler5无法打开安装程序
  • PHP文字ocr识别接口示例、人工智能的发展
  • 【2024 全国青少年信息素养大赛复赛指南】算法创意实践挑战赛复赛、智能算法应用挑战赛复赛指南
  • 构建自定义Tensorflow镜像时用到的链接地址整理
  • C++——二叉搜索树的实现
  • 【AppScan】安装教程 AppScan v10 Web应用安全测试工具(附安装包)零基础入门到精通,收藏这一篇就够了
  • Java项目:基于SSM框架实现的中小型企业财务管理系统【ssm+B/S架构+源码+数据库+答辩PPT+开题报告+毕业论文】
  • c++ - 多态
  • 亚马逊云科技EC2简明教程
  • TCP网络传输控制协议
  • PCDN技术如何应对网络带宽限制?(壹)
  • Java数据结构-链表与LinkedList
  • 单元测试实施最佳方案(背景、实施、覆盖率统计)
  • mysql笔记(表导出文件,文件导入表)
  • Navicat 17 新特性 | 原生支持 Linux ARM 平台以及银河麒麟和统信操作系统
  • 【pytorch】手写数字识别
  • SpringBoot3.3.0升级方案
  • 用 Kotlin 编写四则运算计算器:从零开始的简单教程
  • java算法day13