MyBatis 用于一对多映射主要有两种方式:
- 使用集合属性
一个父类拥有子类的集合属性,在映射时直接映射到集合即可:
<!-- 对象 -->
public class Parent {
private List<Child> children;
}
public class Child {
// ..
}
<!-- 映射 -->
<resultMap id="parentResult" type="Parent">
<collection property="children"
ofType="Child">
... // Child 结果集映射
</collection>
</resultMap>
- 使用association
直接使用association标签映射:
<association property="child" javaType="Child">
... // Child 结果集映射
</association>
或通过 select 查询:
<association property="child"
column="id"
javaType="Child"
select="selectChild"/>
则需要对应的selectChild方法查询Child:
<select id="selectChild" resultType="Child">
...
</select>
这两种方式的不同点是:
- collection 方式会返回一个子类对象的集合。
- association 方式只返回一个子类对象。
两种方式都可以完成一对多的映射,选择方式需视实际需求而定。