MyBatis--10.延迟加载

216 阅读1分钟

1.引言

​ 在数据库的连接查询中,当涉及到多个表的查询时,我们可以使用延迟加载来提高系统的相应速度;延迟加载的功能在于当我们需要访问到该数据时才进行加载,如果没有访问到该数据就只加载主表的内容;

​ 延迟加载只能用在多表单独查询中,MyBatis默认只能对 从表的操作 进行延迟加载,对于主表的操作是采取的是直接加载,所以多表连接查询无法使用延迟加载;

2.几种加载方式

加载方式 说明
直接加载 当主表查询结束后就直接查询从表内容,lazyLoadingEnabled默认是false;
侵入式延迟加载 MyBatis默认将从表的详情加入到主表的详情,当访问主表的详情时就会触发从表的操作,这就叫侵入式延迟加载;aggressiveLazyLoading,默认是false;
深度延迟加载 只有当访问到从表涉及的数据时,才会触发从表的查询操作,这就是深度延迟加载;
	<!--mybatis.xml-->
	<!--深度延迟加载-->
<settings>
		<setting name="lazyLoadingEnabled" value="true"/>
		<setting name="aggressiveLazyLoading" value="false"/>
</settings>
	<!--侵入式延迟加载-->
<settings>
		<setting name="lazyLoadingEnabled" value="true"/>
		<setting name="aggressiveLazyLoading" value="true"/>
</settings>