MyBatis延迟加载及在spring中集成配置

简介:  当你要使用one to one,many to one 就会碰到N+1的问题。很明显,对象之间关联很多有A关联B,B关联C,C关联A这样的关系,如果不是采用延迟加载,很容易一下在出现成千上万对象,造成N+1的问题。   而Mybatis 设置延迟加载主要2个属性配置: <?xml version="1.0" encoding="UTF-8"?> 


当你要使用one to one,many to one 就会碰到N+1的问题。很明显,对象之间关联很多有A关联B,B关联C,C关联A这样的关系,如果不是采用延迟加载,很容易一下在出现成千上万对象,造成N+1的问题。

 

而Mybatis 设置延迟加载主要2个属性配置:


  1. <?xml version="1.0" encoding="UTF-8"?>    
  2. <!DOCTYPE configuration     
  3.   PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">    
  4.     
  5. <configuration>  
  6.     <settings>  
  7.         <setting name="lazyLoadingEnabled" value="false"/>  
  8.         <setting name="aggressiveLazyLoading" value="true"/>  
  9.     </settings>  
  10. </configuration>     
<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE configuration   
  PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">  
  
<configuration>
	<settings>
		<setting name="lazyLoadingEnabled" value="false"/>
		<setting name="aggressiveLazyLoading" value="true"/>
	</settings>
</configuration>   

 

lazyLoadingEnabled:true使用延迟加载,false禁用延迟加载。默认为true

 

aggressiveLazyLoading:true启用时,当延迟加载开启时访问对象中一个懒对象属性时,将完全加载这个对象的所有懒对象属性。false,当延迟加载时,按需加载对象属性(即访问对象中一个懒对象属性,不会加载对象中其他的懒对象属性)。默认为true

 

   加载所有懒对象


  1. <configuration>  
  2.     <settings>  
  3.         <setting name="lazyLoadingEnabled" value="true"/>  
  4.         <setting name="aggressiveLazyLoading" value="true"/>  
  5.     </settings>  
  6. </configuration>    
<configuration>
	<settings>
		<setting name="lazyLoadingEnabled" value="true"/>
		<setting name="aggressiveLazyLoading" value="true"/>
	</settings>
</configuration>  

 

   按需加载对象属性

<configuration>  
  1.     <settings>  
  2.         <setting name="lazyLoadingEnabled" value="true"/>  
  3.         <setting name="aggressiveLazyLoading" value="false"/>  
  4.     </settings>  
  5. </configuration>   
<configuration>
	<settings>
		<setting name="lazyLoadingEnabled" value="true"/>
		<setting name="aggressiveLazyLoading" value="false"/>
	</settings>
</configuration>  

对继承spring配置如下:

  1. <bean id="sqlSessionFactory"  
  2.     class="org.mybatis.spring.SqlSessionFactoryBean">  
  3.     <property name="configLocation" value="classpath:setting.xml"/>  
  4.     <property name="dataSource" ref="dataSource" />  
  5. </bean>  
	<bean id="sqlSessionFactory"
		class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="configLocation" value="classpath:setting.xml"/>
		<property name="dataSource" ref="dataSource" />
	</bean>

setting.xml是mybatis全局属性配置文件。

目录
相关文章
|
12天前
|
SQL Java 数据库连接
(自用)Spring常用配置
(自用)Spring常用配置
15 0
|
5天前
|
存储 安全 Java
第2章 Spring Security 的环境设置与基础配置(2024 最新版)(下)
第2章 Spring Security 的环境设置与基础配置(2024 最新版)(下)
13 0
|
5天前
|
安全 Java 数据库
第2章 Spring Security 的环境设置与基础配置(2024 最新版)(上)
第2章 Spring Security 的环境设置与基础配置(2024 最新版)
28 0
|
6天前
|
安全 Java Spring
Spring Security 5.7 最新配置细节(直接就能用),WebSecurityConfigurerAdapter 已废弃
Spring Security 5.7 最新配置细节(直接就能用),WebSecurityConfigurerAdapter 已废弃
18 0
|
6天前
|
安全 Java 应用服务中间件
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
24 0
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
|
12天前
|
JSON Java 数据库连接
属性注入掌握:Spring Boot配置属性的高级技巧与最佳实践
属性注入掌握:Spring Boot配置属性的高级技巧与最佳实践
21 1
|
12天前
|
Java 数据库连接 Spring
简化配置,提高灵活性:Spring中的参数化配置技巧
简化配置,提高灵活性:Spring中的参数化配置技巧
19 0
|
12天前
|
Java Shell 测试技术
一次配置,多场景适用:Spring Boot多套配置文件的深度剖析
一次配置,多场景适用:Spring Boot多套配置文件的深度剖析
24 0
一次配置,多场景适用:Spring Boot多套配置文件的深度剖析
|
16天前
|
Java 容器
SpringBoot使用配置注解开启自动配置功能&整合spring-boot-configuration-processor
SpringBoot使用配置注解开启自动配置功能&整合spring-boot-configuration-processor
14 0
|
28天前
|
敏捷开发 监控 前端开发
Spring+SpringMVC+Mybatis的分布式敏捷开发系统架构
Spring+SpringMVC+Mybatis的分布式敏捷开发系统架构
63 0