树形结构,是指数据之间的关系像树根延伸出多个树杈。最常见的就是省市区的层级关系。
首先需要在 springboot 项目的 pom.xml 中引入
---
------------------
-------------------------------
-----------
---
表实体类
-
-
-
-
- - - -
------- - -- ---- - ----
- - ---
- - -----------
- - -----------
- - ---------
-
表对应的VO实体类
-
-
-
-
- - - -
------- - -- ---- - ----
- - ---
- - -----------
- - -----------
- - ---------
- ---- ---------
-
实现方式
1、一次查询,递归组装(推荐)
- ---- --- ----------
---- ------- - ----------------
---- ------- - --------------- - -
- -- - - ----
------ ----
- ---
------------
- ----------- ---------
-
- ---- --- --------- ---- ---------
---- -- - - ------
- -- ---- - -------- -
- -------------- ---------- -
------------------ ----------
-----------
-
-
- ---
-
2、逐级递归查询
public List<SystemRegionVo> getTree(Long --------){
LambdaQueryWrapper<SystemRegion> ------- = new LambdaQueryWrapper<>();
-------.eq(SystemRegion::getParentId, --------);
List<SystemRegion> ------- = ----------.selectList(-------);
List<SystemRegionVo> ---- = -------.stream().map(- -> {
SystemRegionVo -- = new SystemRegionVo();
BeanUtils.copyProperties(-, --);
return --;
}).collect(Collectors.toList());
----.forEach(this::getChildren);
return ----;
}
private void getChildren(SystemRegionVo ----){
LambdaQueryWrapper<SystemRegion> ------- = new LambdaQueryWrapper<>();
-------.eq(SystemRegion::getParentId, ----.getId());
List<SystemRegion> ---- = ----------.selectList(-------);
List<SystemRegionVo> ------ = ----.stream().map(- -> {
SystemRegionVo -- = new SystemRegionVo();
BeanUtils.copyProperties(-, --);
return --;
}).collect(Collectors.toList());
----.setChildren(------);
if (!CollectionUtils.isEmpty(------)) {
------.forEach(this::getChildren);
}
}