分步查询与关联不能出现在一起,类似这种结构:
会造成代码冗余;
应该这么写:
<resultMap id="permissionResultMap" type="Permission">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="sn" column="sn"/>
<result property="resource" column="resource"/>
<association property="parent"
javaType="Permission"
column="parent_sn"
select="cn.itsource.crm.mapper.PermissionMapper.selectBySonSn"/>
<collection property="children"
javaType="ArrayList"
ofType="Permission"
column="sn"
select="cn.itsource.crm.mapper.PermissionMapper.selectByParentSn">
</collection>
</resultMap>
<select id="selectBySonSn" resultType="Permission">
SELECT * FROM t_permission WHERE sn=#{sn}
</select>
<select id="selectByParentSn" resultMap="permissionResultMap">
SELECT * FROM t_permission WHERE parent_sn=#{sn}
</select>
什么时候用关联:
- 全是普通字段
- 有对象但是不需要再继续映射了
分步查询两种情况都可以使用