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

Java八股-MyBatis延迟加载

在黑马八股视频专题讲解时碰到的MyBatis延迟加载的问题,感觉讲解有点不太清晰,下面第二个链接是讲解清晰了

【新版Java面试专题视频教程,java八股文面试全套真题+深度详解(含大厂高频面试真题)】 https://www.bilibili.com/video/BV1yT411H7YK/?p=45&share_source=copy_web&vd_source=afbacdc02063c57e7a2ef256a4db9d2a

【【Java面试】说说MyBatis中的延迟加载】 https://www.bilibili.com/video/BV1sN4y1J7TX/?share_source=copy_web&vd_source=afbacdc02063c57e7a2ef256a4db9d2a

我大概说一下原理

在说 MyBatis 中的延迟加载之前,我们先说清楚 2个概念:什么是主查询对象?什么是关联对象?假如,我们现在有两张表,一张用户表,一张订单表:

在这里插入图片描述
在这里插入图片描述
因为 User 和 Order 是1对多的关系,所以 User 就是主查询对象,而 User 对象中的 orderList 就是关联对象。
接下来让我们说下什么是延迟加载?
延迟加载,也叫懒加载、惰性加载。在 MyBatis 中,延迟加载,通常用于多表一对一或者一对多的联合查询中,如果开启了延迟加载,MyBatis 则只会进行主对象的查询,而只有在主查询对象的关联对象的属性被调用时,MvBatis 才会执行关联对象的查询。
在上述的用户-订单的例子中,如果我们在 MvBatis 中开启了延迟加载,当我们从数据库中查询主对象即某个用户信息时,并不会马上返回其关联对象-订单列表的值;而只有在该用户的订单列表属性被访问时,才会去数据库中查询订单列表的信息。
那么,如何设置延迟加载呢?
在 MyBatis 中,我们通过设置 lazyLoadingEnabled 的属性值为 true,aggressiveLazyLoading 的属性值为 false 来全局开启延迟加载。

没有开启延迟加载
在这里插入图片描述

在这里插入图片描述

开启了延迟加载

在这里插入图片描述
开启延迟加载但是注释了访问OrderList代码之后
在这里插入图片描述


http://www.kler.cn/a/404773.html

相关文章:

  • 一维卷积神经网络(1D-CNN)
  • Ubuntu20.04从零安装IsaacSim/IsaacLab
  • Perl 简介
  • Roslyn和csc的关系?C#编程语言的命令行用法?C#编译器支持的版本?
  • 数据库视图
  • React(二)
  • 提交git仓库时,如何关闭lint校验
  • 数据结构 (1)基本概念和术语
  • Easyexcel(4-模板文件)
  • 【QT - 1 - 】什么是QT?
  • LeetCode —— 字母异位词分组
  • Linux 定时任务全解析
  • Spring Cloud Alibaba、Spring Cloud 与 Spring Boot各版本的对应关系
  • 【docker】docker commit 命令 将当前容器的状态保存为一个新的镜像
  • RK3588开发笔记-sata概率性不能识别问题解决
  • 05_Spring JdbcTemplate
  • 【软件开发】如何理解异地多活?
  • 网络安全的学习路线
  • mysql安装---rpm包
  • Flutter-Web首次加载时添加动画
  • [STM32]从零开始的STM32 HAL库环境搭建
  • NuGet如何支持HTTP源
  • 【鸿蒙开发】基础干货篇--6 “超简单持久化存储PersistentStorage”
  • 汽车资讯新视界:Spring Boot技术启航
  • 期权懂|期权中的行权和平仓的区别在于哪里?
  • 17. Linux下在虚拟环境中安装CUDA和CUDNN