我是靠谱客的博主 舒服月光,最近开发中收集的这篇文章主要介绍MyBatis延迟加载笔记,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

什么是延迟加载?

MyBatis中的延迟加载,也称为懒加载,是指在进行表的关联查询时,按照设置延迟规则推迟对关联对象的select查询。例如在进行一对多查询的时候,只查询出一方,当程序中需要多方的数据时,mybatis再发出sql语句进行查询,这样子延迟加载就可以的减少数据库压力。MyBatis 的延迟加载只是对关联对象的查询有迟延设置,对于主加载对象都是直接执行查询语句的。

通过加载时机可以分为以下三种:

  • 直接加载:
    执行完对主加载对象的 select 语句,马上执行对关联对象的 select 查询。
  • 侵入式延迟:
    执行对主加载对象的查询时,不会执行对关联对象的查询。但当要访问主加载对象的详情属性时,就会马上执行关联对象的select查询。
  • 深度延迟:
    执行对主加载对象的查询时,不会执行对关联对象的查询。访问主加载对象的详情时也不会执行关联对象的select查询。只有当真正访问关联对象的详情时,才会执行对关联对象的select 查询。
    注意:
    延迟加载的应用要求:关联对象的查询与主加载对象的查询必须是分别进行的select语句,不能是使用多表连接所进行的select查询。因为,多表连接查询,实质是对一张表的查询,对由多个表连接后形成的一张表的查询。会一次性将多张表的所有信息查询出来。

配置延迟加载

Mybatis配置文件中通过 lazyLoadingEnabledaggressiveLazyLoading 两个属性来控制延迟加载和按需加载。

  • lazyLoadingEnabled:是否启用延迟加载,mybatis默认为false,不启用延迟加载。lazyLoadingEnabled属性控制全局是否使用延迟加载
  • aggressiveLazyLoading:是否按需加载属性,默认值false,lazyLoadingEnabled属性启用时只要加载对象,就会加载该对象的所有属性关闭该属性则会按需加载,即:使用到某关联属性时,才会执行嵌套查询加载该属性。
<settings>
    <!-- 启用延迟加载特性,不配置默认关闭该特性-->
    <setting name="lazyLoadingEnabled" value="true"></setting>
    <!-- 按需加载: false:使用关联属性,及时加载;    true,加载对象,则加载所有属性, -->
     <setting name="aggressiveLazyLoading" value="false"/>
 </settings>

最后

以上就是舒服月光为你收集整理的MyBatis延迟加载笔记的全部内容,希望文章能够帮你解决MyBatis延迟加载笔记所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部