Java以树形数据形式返回

示例表结构

 解决思路:

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

原文地址:https://www.cnblogs.com/gslgb/p/13686462.html