ps 别照抄
1.创建数据库
id int 11 主键
pid int 11 跟随id(跟随上一级)
main string 11 一级餐单的名字
root string 11 二级或者N级餐单的名字
deleted int 1
主要风格大概类似 其余根据自己业务解决
2.创建pojo层,dao层,service层,controller层
直接使用mp生成器生成实体类,但是要修改pojo层 在最后加上 private List list; (T根据自己的pojo类修改)
3.在控制层利用stream流方式解决
public BaseResponse showAll(@RequestParam(required = false) String paramData) {
QueryWrapper<T> queryWrapper = MybatisPlusQuery.parseWhereSql(paramData);
List<T> mainmenu = targetService.list(queryWrapper);
List<T> collect = mainmenu.stream().filter(m -> m.getPid() == 0).map(
(m) -> {
//这里的setlist对应批pojo层的 private List<T> list中的list,根据自己修改的修改
m.setlist(getChildrens(m, mainmenu));
return m;
}
).collect(Collectors.toList());
return BaseResponse.success(collect);
}
public List<T> getChildrens(T root , List<T> all){
List<T> children = all.stream().filter(m -> {
return Objects.equals(m.getPid(),root.getId());
}).map(
(m) -> {
m.setlist(getChildrens(m,all));
return m;
}
).collect(Collectors.toList());
return children;
}
4.实现效果类似
就这样 自己测试完毕
总结 别照抄 稍微修改修改 我也是这里找到 虽然代码含义看不懂就是了 但能解决就好东西