1:表设计
表中必须有两个字段 isparent和parentId,isparent:是否根节点,parentId:父节点id
2:代码设计
后端采用mybatisplus,具体Service设计如下,默认根节点Id为0
/** * 查出来所有的数据,输入根节点id*/ public List<BizWoProgressReport> selectBizWoProgressReportList(BizWoProgressReport bizWoProgressReport) { LambdaQueryWrapper<BizWoProgressReport> bizWoPrintConfigLambdaQueryWrapper = new LambdaQueryWrapper<>(); List<BizWoProgressReport> list = this.list(bizWoPrintConfigLambdaQueryWrapper); return buildBizWoProgressReport(list, 0L); }
/** * 构建前端所需要树结构 */ public List<BizWoProgressReport> buildBizWoProgressReport(List<BizWoProgressReport> bizWoProgressReportList, Long parentId) { List<BizWoProgressReport> returnList = new ArrayList<>(); for (BizWoProgressReport bizWoProgressReport : bizWoProgressReportList) { // 如果是顶级节点, 遍历该父节点的所有子节点 if (parentId.equals(bi