association/collection详解
时间: 2023-08-08 12:06:47 浏览: 71
在MyBatis中,association和collection是resultMap属性中用于定义关联对象和集合对象映射规则的元素。
1. association:用于定义关联对象的映射规则。它可以在一个resultMap中嵌套另一个resultMap,以实现对象之间的关联映射。常见的应用场景是一对一的关联关系。
association元素可以包含以下属性:
- property:指定关联对象在Java对象中的属性名。
- column:指定关联字段在数据库中的列名。
- resultMap:指定关联对象的resultMap,用于定义关联对象的映射规则。
示例:
```xml
<resultMap id="userResultMap" type="User">
<id property="id" column="user_id"/>
<result property="username" column="username"/>
<association property="role" resultMap="roleResultMap"/>
</resultMap>
```
2. collection:用于定义集合对象的映射规则。它可以将查询结果中的多行数据映射为一个集合对象,常见的应用场景是一对多的关联关系。
collection元素可以包含以下属性:
- property:指定集合对象在Java对象中的属性名。
- ofType:指定集合元素的类型。
- column:指定关联字段在数据库中的列名。
- resultMap:指定集合元素的resultMap,用于定义集合元素的映射规则。
示例:
```xml
<resultMap id="orderResultMap" type="Order">
<id property="id" column="order_id"/>
<result property="orderNo" column="order_no"/>
<collection property="items" ofType="OrderItem" resultMap="orderItemResultMap"/>
</resultMap>
```
通过使用association和collection元素,我们可以定义复杂的对象关系映射,使查询结果能够直接转换为Java对象及其关联对象或集合对象。这样可以方便地进行对象间的关联查询和数据封装。