`

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"?>  
<!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

 

   加载所有懒对象

<configuration>
	<settings>
		<setting name="lazyLoadingEnabled" value="true"/>
		<setting name="aggressiveLazyLoading" value="true"/>
	</settings>
</configuration>  

 

   按需加载对象属性

<configuration>
	<settings>
		<setting name="lazyLoadingEnabled" value="true"/>
		<setting name="aggressiveLazyLoading" value="false"/>
	</settings>
</configuration>  

 

 

对继承spring配置如下:

 

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

 

 

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

 

 

 

 

 

 

分享到:
评论
2 楼 PeTiRo 2011-12-27  
补上:
第一次 执行 查询 user的方法是会 延时加载的
但再进行 一次 查询 user的方法的时候 就会上面那异常
1 楼 PeTiRo 2011-12-27  
你好
我的配置是 [按需加载对象属性]
group 是 User 对象的一个 属于 One2One的
后台报这 An attempt has been made to read a not loaded lazy property 'group' of a disconnected object 异常

相关推荐

    spring+netty+mybatis整合实例

    在IT行业中,Spring、Netty和MyBatis是三个非常重要的框架,它们分别在不同的领域发挥着关键作用。Spring是一个全面的Java应用框架,提供强大的依赖注入、AOP(面向切面编程)以及丰富的功能模块;Netty则是一个高...

    MyBatis-Simplified-Chinese.rar_ mybatis-3_Mybatis-spring_mybatis

    mybatis-spring 是一个 MyBatis 与 Spring 框架的整合库,它提供了与 Spring 的无缝集成,如事务管理、自动扫描 Mapper 类、SqlSession 的自动关闭等,简化了在 Spring 中使用 MyBatis 的过程。 七、最佳实践 1. ...

    springmvc4+mybatis+mybatisplus整合

    整合SpringMVC、MyBatis和MyBatisPlus,首先需要在项目中引入对应的依赖,然后配置SpringMVC的web.xml和Spring的配置文件。在Spring配置文件中,需要配置数据源、SqlSessionFactory、MyBatisPlus的配置以及...

    spring mybatis 3.x 使用图文

    在配置文件中,通常会指定MyBatis的配置文件路径`configLocation`,以及是否启用延迟加载等特性。 #### Mapper映射器与注解优先级 在Spring与MyBatis的整合中,Mapper接口被广泛使用。MyBatis允许通过注解或XML...

    springboot + mybatis(通用mapper) + HikariCP(比durid更快)多数据源

    同时,我们还需要配置 MyBatis 的 SqlSessionFactory 和 SqlSessionTemplate,以便在多数据源环境中正确地执行 SQL 语句。 总结来说,这个项目组合利用 `SpringBoot` 的自动化配置,简化了应用的构建;通过 `...

    mybatis中文教程

    掌握MyBatis的基本使用后,你还可以深入学习其高级特性,如延迟加载(Lazy Loading)、动态SQL、缓存机制、MyBatis Generator自动生成代码等。在实际项目中,MyBatis不仅可以用于单表操作,还能处理多表联查、复杂...

    MyBatis 3 开发指南(中文版).zip

    这份文档会讲解如何将MyBatis集成到Spring环境中,包括使用Spring的DataSource、SqlSessionFactoryBean、TransactionManager等组件。同时,会介绍如何通过注解或XML配置来定义Mapper Bean,以及Spring的AOP事务管理...

    mybatis开发jar包

    10. **延迟加载**:MyBatis的延迟加载功能可以在真正需要数据时才进行加载,提高了应用的响应速度。 以上就是关于MyBatis的一些核心知识点,这些内容涵盖了MyBatis的基本使用和高级特性,有助于开发者深入理解和...

    SpringBoot+Spring+MyBatis-51问-面试用

    【SpringBoot+Spring+MyBatis-51问-面试用】 1. **SpringBoot** 是什么? SpringBoot 是一款 Java ...在面试中,可能会讨论如何集成MyBatis与SpringBoot,以及MyBatis的配置、映射器、SqlSession管理等方面的知识。

    spring+mybatis 企业应用实战源码(2-10章)

    9. **第10章**:最后,可能会讨论一些高级主题,比如Spring的缓存支持(如使用Ehcache或Redis),以及Mybatis的延迟加载和缓存机制。此外,还可能涉及性能优化策略,如批处理操作和连接池的配置。 以上各章节的源码...

    狂神说Mybatis.zip

    10. **Mybatis实战**:通过实际项目中的案例,学习如何集成Mybatis到Spring Boot或其它框架中,如何处理复杂查询,如何优化性能等。 "狂神说Mybatis"的笔记将全面解析以上知识点,并通过实例演示来帮助学习者掌握...

    mybatis核心包+mysql驱动包+mybatis依赖包(完整).zip

    在项目中,MyBatis通常与其他框架结合使用,比如Spring框架,形成Spring MyBatis集成,以便更好地管理和控制事务。通过Spring的@Autowired注解,可以方便地注入SqlSessionTemplate或SqlSessionDaoSupport,实现DAO层...

    Mybatis中文版

    10. **绑定期绑定**:Mybatis的另一个强大特性是延迟加载,也称为懒加载。当实体对象的某个属性未初始化时,只有在真正访问该属性时才会去数据库查询,从而提高效率。 通过学习和熟练掌握Mybatis中文版,开发者可以...

    mybatis练习

    2. **配置文件**:在MyBatis中,主要的配置文件是`mybatis-config.xml`,其中包含了数据源、事务管理器、环境配置等信息。这个配置文件是整个MyBatis系统的基础。 3. **映射文件**:映射文件(如`UserMapper.xml`)...

    MyBatis3.2.4完全自学手册

    在MyBatis中,可以通过配置`fetchType`属性来实现延迟加载。 示例: ```xml SELECT o.*, od.items_id, od.items_num FROM orders o LEFT JOIN orderdetail od ON o.id = od.orders_id ...

    MyBatis学习笔记.zip

    5. **MyBatis与Spring的整合**:介绍如何在Spring框架中配置MyBatis,以及如何使用Spring的@Autowired和@Scope注解。 6. **MyBatis的延迟加载(Lazy Loading)**:说明何时启用延迟加载,以及如何处理懒加载引起的N...

    尚硅谷 4月份MyBatis视频教程(国内首套:源码级讲授的MyBatis视频)最新更新

    一级缓存默认开启,二级缓存需要手动开启,并且需要在配置文件中指定。 ### 四、MyBatis的配置详解 #### 4.1 配置文件结构 MyBatis的核心配置文件为`mybatis-config.xml`,主要包含以下节点: - `&lt;settings&gt;`:...

    mybatis最新所有jar包

    在实际使用MyBatis时,开发者需要在配置文件中指定数据源、事务管理器以及映射文件的位置。映射文件中定义了SQL语句和结果映射,允许SQL语句根据业务需求动态变化。MyBatis支持存储过程、动态SQL、一对一和一对多的...

    Mybatis笔记

    Spring整合Mybatis,即在Spring框架中集成Mybatis,主要是通过配置sqlSessionFactory来完成,整合后可以实现事务管理以及DAO的简化操作。原始DAO开发方式在整合Spring后,需要通过SqlSessionFactoryBean获取...

Global site tag (gtag.js) - Google Analytics