mybatis版本 树结构数据获取:
<resultMap id="treeMap" type="com.productOrder.domain.MDirectoryMenuVo" >
<result column="id" property="id" />
<result column="dir_parent_id" property="dirParentId" />
<result column="dir_root_id" property="dirRootId" />
<result column="dir_level" property="dirLevel" />
<result column="dir_path" property="dirPath" />
<result column="tenant_id" property="tenantId" />
<result column="dir_current_id" property="dirCurrentId" />
<!--id作为参数递归调用getDeptTree,查询子节点-->
<collection property="mDirectoryMenu" column="{dirCurrentId = dir_current_id,tenantId = tenant_id}" ofType="map" select="findMenuMDirectory"/>
</resultMap>
<select id="findMDirectory" resultMap="treeMap" >
SELECT <include refid="Base_Column_List" />
FROM m_directory WHERE dir_parent_id = 0 and tenant_id = #{tenantId}
</select>
<!-- 查询子节点 -->
<select id="findMenuMDirectory" parameterType="java.util.Map" resultMap="treeMap" >
SELECT <include refid="Base_Column_List" />
FROM m_directory WHERE dir_parent_id RegExp #{dirCurrentId} and tenant_id RegExp #{tenantId}
</select>
java 8版本 树结构数据获取::
//获取父节点
List<SpuBaseClassificationMenuVo> collect = spuBaseClassificationVoList.stream().filter(m -> m.getParentId().equals("0")).map(
(m) -> {
m.setChildList(getChildrens(m, spuBaseClassificationVoList));
return m;
}
).collect(Collectors.toList());
private List<SpuBaseClassificationMenuVo> getChildrens(SpuBaseClassificationMenuVo spuBaseClassificationMenuVo, List<SpuBaseClassificationMenuVo> spuBaseClassificationVoList) {
List<SpuBaseClassificationMenuVo> children = spuBaseClassificationVoList.stream().filter(m -> {
return Objects.equals(m.getParentId(), spuBaseClassificationMenuVo.getViewId());
}).peek(
(m) -> m.setChildList(getChildrens(m, spuBaseClassificationVoList))
).collect(Collectors.toList());
return children;
}
其他版本后续输出!!!