JAVA全系列 教程
3762个小节阅读:7088k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
分解式查询又分为两种加载方式:
延迟加载在获取关联数据时速度较慢,但可以节约资源,即用即取。
设置所有的N+1查询都为延迟加载:
xxxxxxxxxx
<settings>
<setting name="lazyLoadingEnabled" value="true"/>
</settings>
设置某个方法为延迟加载:
在<association>
、<collection>
中添加fetchType属性设置加载方式。lazy:延迟加载;eager:立即加载。
xxxxxxxxxx
@Test
public void testFindAllClasses2(){
ClassesMapper2 classesMapper2 = session.getMapper(ClassesMapper2.class);
List<Classes> all = classesMapper2.findAll();
all.forEach(System.out::println);
System.out.println("-------------------------");
System.out.println(all.get(0).getStudentList());
}
由于打印对象时会调用对象的toString
方法,toString
方法默认会触发延迟加载的查询,所以我们无法测试出延迟加载的效果。
我们在配置文件设置lazyLoadTriggerMethods属性,该属性指定对象的什么方法触发延迟加载,设置为空字符串即可。
xxxxxxxxxx
<settings>
<setting name="lazyLoadTriggerMethods" value=""/>
</settings>
一般情况下,一对多查询使用延迟加载,一对一查询使用立即加载。
1.在配置文件的<setting>
配置什么name
值可以设置所有N+1查询都是懒加载:
A lazyLoadingEnabled
B lazyLoading
C LoadingEnabled
D lazy
2.在<association>
、<collection>
中添加属性可以设置加载方式:
A fetch
B fetchType
C type
D load
1=>A 2=>B