MyBatis 是否支持延迟加载?怎么实现?什么时候启用?

简介: MyBatis 是否支持延迟加载?怎么实现?什么时候启用?

(1)支持!MyBatis 有两种加载方式:立即加载和延迟加载

MyBatis 只支持 association 关联对象和 collection 关联集合对象的延迟加载,association 指的是一对一关联查询的,collection 指的是一对多关联查询。

(2)在 MyBatis 配置文件中,有两种方式可以配置是否启用延迟加载:

第一种是在配置文件的 <settings> 标签中为所有嵌套查询设为延迟加载

第二种是在 <association>、<collection > 中添加 < fetchType > 设置

<settings>
        <!--2.开启延迟加载-->
        <!--(1)此方式为:设置所有的分解式(N+1)查询都为延迟加载:
      注意:这种方式很少使用,因为不可能为所以分解式查询都设置为延迟加载-->
        <setting name="lazyLoadingEnabled" value="true"/>
        <!--(2)此方式为:映射文件中<collection>或<association>中设置了fetchType的方法触发延迟加载,设置为空字符串即可。-->
        <setting name="lazyLoadTriggerMethods" value=""/>
    </settings>

(3)一般情况下,一对多查询使用延迟加载一对一查询使用立即加载。因为一对多可能有上万甚至更多的数据,如果立即加载的话会很占用空间,所以使用延迟加载;而一对一查询的话,只有一条数据,立即加载也不会有什么影响,所以可以立即加载。

相关文章
|
13天前
|
存储 缓存 Java
【MyBaits】4、延迟加载、MyBatis 的缓存
【MyBaits】4、延迟加载、MyBatis 的缓存
24 0
|
13天前
|
Java 数据库连接 mybatis
Mybatis中延迟加载~
Mybatis中延迟加载~
|
13天前
|
Java 数据库连接 mybatis
一文彻底搞懂Mybatis系列(十二)之MyBatis多对一映射延迟加载(association和lazyLoadingEnabled)
一文彻底搞懂Mybatis系列(十二)之MyBatis多对一映射延迟加载(association和lazyLoadingEnabled)
|
9月前
|
SQL Java 数据库连接
【MyBatis】高级映射多对一,一对多和延迟加载
【MyBatis】高级映射多对一,一对多和延迟加载
|
9月前
|
SQL Java 数据库连接
2021-08-06项目实现过程-ssm框架,关联映射,延迟加载,使用注解实现mybatis映射
2021-08-06项目实现过程-ssm框架,关联映射,延迟加载,使用注解实现mybatis映射
46 0
|
10月前
|
SQL Java 数据库连接
Mybatis 是否支持延迟加载?如果支持,它的实现原理是什么?
Mybatis 是否支持延迟加载?如果支持,它的实现原理是什么?
72 0
|
SQL Java 数据库连接
Java 最常见的面试题:mybatis 是否支持延迟加载?延迟加载的原理是什么?
Java 最常见的面试题:mybatis 是否支持延迟加载?延迟加载的原理是什么?
|
SQL 存储 XML
Mybatis 高阶学习(映射文件深入、延迟加载、缓存、注解开发等)
Mybatis 高阶学习(映射文件深入、延迟加载、缓存、注解开发等)
281 0
Mybatis 高阶学习(映射文件深入、延迟加载、缓存、注解开发等)
|
Java 数据库连接 数据库
MyBatis框架:第八章:自定义结果集,一对一,一对多,延迟加载,赖加载
MyBatis框架:第八章:自定义结果集,一对一,一对多,延迟加载,赖加载
136 0
MyBatis框架:第八章:自定义结果集,一对一,一对多,延迟加载,赖加载
|
Java 数据库连接 数据库
【MyBatis】学习笔记13:延迟加载(懒加载)
【MyBatis】学习笔记13:延迟加载(懒加载)
112 0
【MyBatis】学习笔记13:延迟加载(懒加载)