1、结果映射
<resultMap type="com.xxx.xxxVo" id="ResultMap">
<id property="bizId" column="id"/>
<!-- todo 其他参数-->
<collection property=" 对应列表属性名 " ofType="com.xxx.xxxVo"
<!-- 搜索方法填写对应方法所在路径,只需要写在xml文件里边,不需要在mapper中声明-->
select="com.xxx.xxxMapper.xxx"
<!-- 传递搜索属性名,由母表id传递 -->
column="id">
<result property="id" column="id"/>
<!-- todo 其他参数-->
</collection>
</resultMap>
2、sql编写
母表
<select id="queryZjList" resultMap="ResultMap">
<!-- todo 正常编写母表查询sql -->
</select>
子表
<select id="queryByBizId" resultType="com.xxx.xxxVo">
<!-- todo 正常写子表查询sql -->
and A.bizId = #{id}
</select>
原理是采用n+1次查询构建树形列表,优点是使用简单,代码简单易懂,适用于一次几百数据量、非高并发项目业务。缺点不适用于大数据量、高并发场景,替代方案建议采用两次查询然后在业务代码层面进行拼接,如果数据量大则限制前端点开才展开子表