示例表結構
解決思路:
1、先查詢出所有要分類的數據,以List存儲
2、通過Java8的新特性stream來處理
3、通過遞歸獲取子項目的List
4、要在返回實體中增加子項目
public class ProjectVO extends Project { /** * 子項目 */ private List<ProjectVO> children; // setter 和getter方法 }
//查詢出所有分類數據
List<ProjectVO> projectVOList = projectMapper.selectByUciDbId(projectVO);
return projectVOList.stream().filter(vo -> "0".equals(vo.getpParentId()))
.peek(vo -> vo.setChildren(getChildList(vo, projectVOList)))
.collect(Collectors.toList());
/** * 根據當前類別,找出子類,並通過遞歸找出子類的子類 * * @param projectVO * @param projectVOList * @return */ private List<ProjectVO> getChildList(ProjectVO projectVO, List<ProjectVO> projectVOList) { return projectVOList.stream().filter(vo -> vo.getpParentId().equals(projectVO.getpId())) .peek(vo -> vo.setChildren(getChildList(vo, projectVOList))) .collect(Collectors.toList()); }
參考博客:https://www.cnblogs.com/chengming104/p/13612550.html