mybatis级联懒加载
时间: 2024-11-28 14:20:32 浏览: 18
mybatis关联/级联以及动态sql
MyBatis 的级联懒加载(Cascade Lazy Loading)是一种设计模式,它允许你在关联关系中只在真正需要的时候才加载数据,从而提高性能。在 MyBatis 中,通常通过 `@OneToOne`, `@OneToMany` 或 `@ManyToOne` 等映射注解启用这个特性。
当你查询一个包含嵌套关系的对象时,如果设置了级联懒加载,MyBatis 默认不会立即加载关联的子对象,而是在第一次访问这些属性时才会从数据库动态地加载。这有助于减少初始查询的数据量,特别是在处理大量数据或深层次嵌套关系时效果明显。
例如,如果你有一个 User 实体引用 Address 实体列表,可以这样做:
```xml
<select id="selectUser" resultType="com.example.User">
SELECT * FROM users WHERE id = #{id}
<include refId="selectAllAddresses"/>
</select>
<sql id="selectAllAddresses">
LEFT JOIN addresses ON users.id = addresses.user_id
</sql>
```
然后在 User 对象上设置懒加载策略:
```java
@OneToMany(cascade = CascadeType.LAZY)
private List<Address> addresses;
```
阅读全文