MyBatis在映射文件中加载关联关系对象主要通过哪两种方式
时间: 2024-09-30 16:10:26 浏览: 40
MyBatis在映射文件中加载关联关系对象主要有以下两种方式:
1. **一对一关联(One-to-One)**:通常通过`<association>`元素来处理,它会自动创建一个属性,这个属性是一个对应的实体对象。例如:
```xml
<select id="getUserById" resultType="User">
SELECT * FROM user WHERE id = #{id}
<association property="address" column="user_address_id"/>
</select>
```
2. **一对多关联(One-to-Many)**:同样使用`<association>`元素,但是可能会涉及分页、延迟加载等情况,比如可以指定`fetchType`属性控制是否立即加载所有关联数据:
```xml
<select id="findAllUsersWithOrders" resultType="User">
SELECT u.*, o.* FROM user u
LEFT JOIN order o ON u.id = o.user_id
<association property="orders" column="user_id" fetchType="lazy">
<!-- ... -->
</association>
</select>
```
还可以通过`<collection>`元素配置动态加载关联数据。
这两种方式都是通过SQL查询一次性获取主表和关联表的数据,并由MyBatis在运行时处理关联关系。
阅读全文