当前位置: 首页 > article >正文

使用递归处理无限自关联表

无限自关联表

所谓的无限自关联表就是类似于下图,有parent_id的这种,需要分级显示

 实体类

实体类需要添加一个属性--下级列表 List<SysMenu> children;这个属性中是我们该实体的孩子结点

工具类处理分级树

public class MenuHelper {
    public static List<SysMenu> buildTree(List<SysMenu> sysMenus) {
       List<SysMenu> tree=new ArrayList<>();
        //查找根节点
        for (SysMenu sysMenu : sysMenus) {
            if (sysMenu.getParentId()==0){
                tree.add(findChildren(sysMenu,sysMenus));
            }
        }
        return tree;
    }
    //查找某结点的孩子结点
    private static SysMenu findChildren(SysMenu sysMenu, List<SysMenu> sysMenus) {
        //先将该结点的孩子集合置为空,随后再拿出集合添加
        sysMenu.setChildren(new ArrayList<>());
        for (SysMenu menu : sysMenus) {
            if (menu.getParentId().longValue()==sysMenu.getId().longValue()){
                //是该结点的孩子就插入,再递归查询这个孩子的孩子
                sysMenu.getChildren().add(findChildren(menu,sysMenus));
            }
        }
        return sysMenu;
    }
}

 Service层业务处理

  public List<SysMenu> findNodeList() {
        //查询所有的结点
       List<SysMenu> sysMenus= sysMenuMapper.selectAllMenus();
       if (CollectionUtil.isEmpty(sysMenus)) return null;
        //处理分级逻辑
        List<SysMenu> treeList = MenuHelper.buildTree(sysMenus); //构建树形数据
        return treeList;
    }

返回结果

我们返回的结果就可以分级的显示,前端就利用element-plus中的表格即可,然后js赋值


http://www.kler.cn/a/514060.html

相关文章:

  • linux下springboot项目nohup日志或tomcat日志切割处理方案
  • npm操作大全:从入门到精通
  • WPF1-从最简单的xaml开始
  • freecad1.0的编译
  • Linux容器(初学了解)
  • PyTorch使用教程(8)-一文了解torchvision
  • 如何使用Python爬虫按关键字搜索AliExpress商品:代码示例与实践指南
  • go读取excel游戏配置
  • 第四天 深入学习JavaScript,包括函数、数组、对象、闭包等
  • VUE3 vite下的axios跨域
  • React 中hooks之 React.memo 和 useMemo用法总结
  • 红外热成像之无人机载荷
  • 跨站脚本攻击(XSS)原理及防护方案
  • 优秀代码段案例__笔记
  • C++11的多线程
  • 亚博microros小车-原生ubuntu支持系列:1 键盘控制
  • Prometheus部署及linux、mysql、monog、redis、RocketMQ、java_jvm监控配置
  • QT 中 UDP 的使用
  • 专业138总分400+中国科学技术大学843信号与系统考研中科大电子信息通信生医先研,真题,大纲,参考书。
  • Java面试专题——常见面试题1
  • (5)STM32 USB设备开发-USB键盘
  • TiDB 的优势与劣势
  • 基于卷积神经网络的验证码识别
  • oneplus3t-lineageos-16.1编译-android9,
  • 机器学习有哪些应用场景
  • Java后端Controller参数校验的一些干货及问题~