配置完ibatis的关系后,做单元测试发现关联的对象并没有被查询出来,review了一遍,没发现有什么问题,查了一下,发现是延迟加载的问题
.
iBATIS支持延迟加载,可以在sqlMapConfig.xml中配置lazyLoadingEnabled来设置,默认情况下为true,即默认开启延迟加载。
使用延迟加载时要求符合一定的规范,如果直接使用连接语句查询出所有对象的话就不能延迟加载了。
例如:一个用户有多个地址,对应表User和Address。
<resultMap id="ResultUserMap" class="User">
<result property="userId" column="userId" />
<result property="addressList" select="getAddressList" column="userId" />
</resultMap>
<resultMap id="ResultAddressMap" class="Address">
</resultMap>
<select id="getUserList" resultMap="ResultUserMap" >
select userId from DemoUser
</select>
<select id="getAddressList" resultMap="ResultAddressMap">
select userId,address from DemoAddress
where userId = #value#
</select>
当访问getUserList时,查询出所有用户,直到使用Address时才会去自动执行getAddressList,获取Address信息。
分享到:
相关推荐
此外,ibatis还支持延迟加载,即只有在真正需要时才加载关联对象,从而避免了不必要的数据加载和内存消耗。 ### ibatis高级特性 #### 动态SQL ibatis的一个强大特性是动态SQL。它允许开发者在运行时根据不同的...
iBatis提供了延迟加载(Lazy Loading)功能,允许在真正需要关联数据时才执行对应的SQL。在`resultMap`中开启延迟加载: ```xml ``` #### 动态映射 动态SQL让开发者可以根据条件动态构造SQL语句,使用`if`, `...
同时,MyBatis 还支持自定义缓存实现,通过实现 `org.apache.ibatis.cache.Cache` 接口,可以创建自己的缓存策略。 **缓存的使用和优化** - 考虑到数据一致性,对于经常更新的数据,可能不适合开启二级缓存。 - ...
延迟加载(Lazy Loading)是iBatis的一种优化策略,只在真正需要时才加载关联的对象,减少了不必要的数据库交互。一对多或多对一关系的处理是对象关系映射(ORM)中的常见问题,iBatis提供了优雅的方式来管理这些...
- **数据关联**:包括一对多和一对一关联,以及支持延迟加载,提高数据处理效率。 - **事务管理**:iBATIS 支持基于 JDBC 的本地事务管理和基于 JTA 的分布式事务管理。 - **基于 JDBC 的事务管理机制**:适用于...
- **延迟加载**:对于一对多和一对一关联,可以启用延迟加载,仅在真正需要关联对象时才加载,提高效率。 #### ibatis高级特性 - **动态映射**:ibatis允许在SQL语句中使用动态参数,如`if`、`choose`、`foreach`...
同时,Ibatis也支持结果集的分页和延迟加载,进一步提升性能。 9. **插件扩展**: Ibatis允许开发者自定义插件,通过拦截器模式增强SqlSession或Executor的行为,例如日志记录、性能分析等。 这个自己编写的...
- **数据关联**:描述了一对多和一对一的关系映射方式,支持延迟加载以优化性能。 - **一对多关联**:通过子查询或嵌套查询的方式处理一对多关系。 - **一对一关联**:同样支持子查询或嵌套查询的方式处理一对一...
2. **settings**:提供了一系列的开关,用于开启或关闭某些功能,如缓存的启用、延迟加载的开启等。 3. **typeAliases**:类型别名的配置,用于简化Java类型的引用。 4. **typeHandlers**:类型处理器,用于处理...
4. **性能优化**:通过延迟加载(Lazy Loading)和预加载(Eager Loading)策略,优化数据加载性能。 5. **日志集成**:允许开发者集成各种日志框架,以便记录数据库操作信息,便于调试和监控。 **总结** IBatis...
延迟加载(Lazy Loading)是一种优化策略,当对象属性被访问时,才去数据库查询相关联的数据,以提高性能。动态映射允许在运行时生成SQL,使得SQL语句可以根据传入参数的变化而变化,增加了代码的灵活性。 事务管理...
1. **Settings**:用于定义ibatis运行时的行为参数,如缓存管理、字节码增强、延迟加载等。例如,`cacheModelsEnabled`用于控制是否启用缓存机制,这对于提高查询效率尤为重要;`lazyLoadingEnabled`则决定了关联...
- **一对一关联**:类似于一对多关联,ibatis也支持一对一的关联关系,同样可以通过嵌套查询或结果的方式实现。 - **延迟加载**:ibatis支持懒加载机制,即在实际需要数据时才发起查询,以提高性能。 - **动态...
延迟加载(Lazy Loading)功能可以在需要时才加载关联的数据,以提高性能。动态映射允许你在运行时根据 Java 对象的状态动态生成 SQL 语句,增强了 SQL 语句的可扩展性。 在事务管理方面,Ibatis 支持基于 JDBC 和 ...
接着,书中还会介绍iBatis的高级特性,如结果映射、关联查询、延迟加载等。结果映射允许开发者将数据库查询结果自动映射到Java对象,简化了数据处理的过程。而关联查询则能处理一对一、一对多、多对多的关系,使得...