MyBatis 的级联属性可以做什么?

MyBatis中的级联属性(Cascading ResultMaps)可以用于解决嵌套结果集和对象复杂的嵌套关系映射。
具体来说,它可以做以下几件事:

1. 映射嵌套结果集

<resultMap id="userResult" type="User">
  <association property="address" 
             resultMap="addressResultMap"/> 
</resultMap>

<resultMap id="addressResultMap" type="Address">
   ... 
</resultMap>

这里将 addressResultMap 作为associationresultMap,实现结果集的嵌套映射。

2. 实现对象复杂的嵌套关系映射

<resultMap id="deptResult" type="Dept">
  <collection property="emps"  
             resultMap="empResultMap"/>
</resultMap>

<resultMap id="empResultMap" type="Emp">
   ...
</resultMap>

使用resultMap实现对象的多层次嵌套关系。

3. 级联结果映射

<resultMap id="empResultMap" type="Emp">
  < association property="dept" resultMap="deptResultMap"/>
</resultMap>

这里 empResultMap 引用了 deptResultMap ,实现了级联结果映射。

通过级联结果映射,可以有效解决对象复杂嵌套关系和结果集嵌套的映射问题。

而不需要定义多个结果映射,只用一个顶层结果映射即可。