我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Spring Boot + Mybatis Plus实现树状菜单的方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Spring Boot + Mybatis Plus实现树状菜单的方法

1、实体类中添加子菜单列表或集合

在这里插入图片描述


 @TableField(exist = false)
    private Set<SysMenu> childrenList = new HashSet<>();

2、定义一个方法递归的获取子菜单


public SysMenu getChildrenList(SysMenu sysMenu, List<SysMenu> sysMenuList) {
        for (SysMenu menu : sysMenuList) {
            if (menu.getMenuParentId().equals(sysMenu.getId())) {
                sysMenu.getChildrenList().add(getChildrenList(menu, sysMenuList));
            }
        }
        return sysMenu;
    }

3、构建菜单树


 public List<SysMenu> menuTree() {
        //获取所有菜单
        List<SysMenu> sysMenuList = list(new LambdaQueryWrapper<SysMenu>()
                //::在java8中的作用就是获得方法
                .eq(SysMenu::getMenuType, ResultConstant.MENU)
        );
        //stream().filter()作用:过滤一个List对象,查找符合条件的对象集合
        List<SysMenu> firstMenuList = sysMenuList.stream().filter
                //过滤出一级菜单
                (s -> s.getMenuParentId().equals(ResultConstant.MENU_TOP))
                // 返回list集合形式
                .collect(Collectors.toList());
        // 遍历一级菜单,构造菜单树
        for (SysMenu menu : firstMenuList) {
            getChildrenList(menu, sysMenuList);
        }
        return firstMenuList;
    }

在这里插入图片描述
在这里插入图片描述

菜单表如下

在这里插入图片描述


CREATE TABLE `sys_menu` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `menu_name` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '资源名称',
  `menu_permission` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '权限',
  `menu_path` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '对应url',
  `menu_parent_id` bigint(20) DEFAULT NULL COMMENT '父节点id',
  `menu_type` int(11) DEFAULT NULL COMMENT '菜单类型0菜单,1栏目类型',
  `order_num` int(11) DEFAULT NULL COMMENT '排序字段:值越小 顺序越靠前',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime DEFAULT NULL COMMENT '最后更新时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=75 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC COMMENT='菜单表';

-- ----------------------------
-- Records of sys_menu
-- ----------------------------
INSERT INTO `sys_menu` VALUES ('1', '菜单树', 'homePage:menuTree', '', '0', '0', '1', '2021-09-17 12:46:11', '2021-09-17 12:46:11');
INSERT INTO `sys_menu` VALUES ('2', '登录模块', null, null, '0', '0', '2', null, null);
INSERT INTO `sys_menu` VALUES ('3', '登录', null, '/login', '2', '1', '1', null, null);
INSERT INTO `sys_menu` VALUES ('4', '修改密码', null, '/login/updatePassword', '2', '1', '2', null, null);
INSERT INTO `sys_menu` VALUES ('5', '修改个人信息', null, '/login/updateMessage', '2', '1', '3', null, null);
INSERT INTO `sys_menu` VALUES ('6', '忘记密码', 'login:forgetPassword', '/login/forgetPassword', '2', '1', '4', null, null);
INSERT INTO `sys_menu` VALUES ('7', '消息通知管理', null, null, '0', '0', '3', null, null);
INSERT INTO `sys_menu` VALUES ('8', '发布通知', 'notice:insert', '/notice/insert', '7', '1', '1', null, null);
INSERT INTO `sys_menu` VALUES ('9', '修改通知', 'notice:update', '/notice/update', '7', '1', '2', null, null);
INSERT INTO `sys_menu` VALUES ('10', '删除通知', 'notice:delete', '/notice/delete', '7', '1', '3', null, null);
INSERT INTO `sys_menu` VALUES ('11', '查看所有通知', 'notice:listAll', '/notice/listAll', '7', '1', '4', null, null);
INSERT INTO `sys_menu` VALUES ('12', '查看本人已发布通知', 'notice:noticeList', '/notice/noticeList', '7', '1', '5', null, null);
INSERT INTO `sys_menu` VALUES ('13', '查看所有已发布通知', 'notice:releasedNotice', '/notice/releasedNotice', '7', '1', '6', null, null);
INSERT INTO `sys_menu` VALUES ('14', '系统管理', null, null, '0', '0', '4', null, null);
INSERT INTO `sys_menu` VALUES ('15', '用户管理', null, null, '14', '0', '1', null, null);
INSERT INTO `sys_menu` VALUES ('16', '添加用户', 'user:insert', '/user/insert', '15', '1', '1', null, null);
INSERT INTO `sys_menu` VALUES ('17', '修改用户信息', 'user:update', '/user/update', '15', '1', '2', null, null);
INSERT INTO `sys_menu` VALUES ('18', '删除用户信息', 'user:delete', '/user/delete', '15', '1', '3', null, null);
INSERT INTO `sys_menu` VALUES ('19', '查看所有用户信息', 'user:listAll', '/user/listAll', '15', '1', '4', null, null);
INSERT INTO `sys_menu` VALUES ('20', '分配用户角色', 'user:setRole', '/user/setRole', '15', '1', '5', null, null);
INSERT INTO `sys_menu` VALUES ('21', '角色管理', null, null, '14', '0', '2', null, null);
INSERT INTO `sys_menu` VALUES ('22', '添加角色', 'role:insert', '/role/insert', '21', '1', '1', null, null);
INSERT INTO `sys_menu` VALUES ('23', '修改角色信息', 'role:update', '/role/update', '21', '1', '2', null, null);
INSERT INTO `sys_menu` VALUES ('24', '删除角色', 'role:delete', '/role/delete', '21', '1', '3', null, null);
INSERT INTO `sys_menu` VALUES ('25', '查看所有角色', 'role:listAll', 'role:listAll', '21', '1', '4', null, null);
INSERT INTO `sys_menu` VALUES ('26', '设置角色权限', 'role:setMenu', '/role/setMenu', '21', '1', '5', null, null);
INSERT INTO `sys_menu` VALUES ('27', '查看自己是否各个拥有角色', 'role:myRole', '/role/myRole', '21', '1', '6', null, null);
INSERT INTO `sys_menu` VALUES ('28', '权限管理', null, null, '14', '0', '3', null, null);
INSERT INTO `sys_menu` VALUES ('29', '添加权限', 'menu:insert', '/menu/insert', '28', '1', '1', null, null);
INSERT INTO `sys_menu` VALUES ('30', '修改权限', 'menu:update', '/menu/update', '28', '1', '2', null, null);
INSERT INTO `sys_menu` VALUES ('31', '删除权限', 'menu:delete', '/menu/delete', '28', '1', '3', null, null);
INSERT INTO `sys_menu` VALUES ('32', '查看所有权限', 'menu:listAll', '/menu/listAll', '28', '1', '4', null, null);
INSERT INTO `sys_menu` VALUES ('33', '登录日志', '', '', '14', '0', '4', null, null);
INSERT INTO `sys_menu` VALUES ('34', '操作日志', '', '', '14', '0', '5', null, null);
INSERT INTO `sys_menu` VALUES ('35', '信息管理', null, null, '0', '0', '5', null, null);
INSERT INTO `sys_menu` VALUES ('36', '查看所有学生信息', 'student:listAll', '/student/listAll', '35', '0', '1', null, null);
INSERT INTO `sys_menu` VALUES ('37', '查看所有教师信息', 'teacher:listAll', '/teacher/listAll', '35', '0', '2', null, null);
INSERT INTO `sys_menu` VALUES ('38', '班级信息管理', null, null, '35', '0', '3', null, null);
INSERT INTO `sys_menu` VALUES ('39', '添加班级', 'class:insert', '/class/insert', '38', '1', '1', null, null);
INSERT INTO `sys_menu` VALUES ('40', '修改班级信息', 'class:update', '/class/update', '38', '1', '2', null, null);
INSERT INTO `sys_menu` VALUES ('41', '删除班级', 'class:delete', '/class/delete', '38', '1', '3', null, null);
INSERT INTO `sys_menu` VALUES ('42', '查看所有班级', 'class:listAll', '/class/listAll', '38', '1', '4', null, null);
INSERT INTO `sys_menu` VALUES ('43', '专业管理', null, null, '35', '0', '4', null, null);
INSERT INTO `sys_menu` VALUES ('44', '添加专业', 'major:insert', '/major/insert', '43', '1', '1', null, null);
INSERT INTO `sys_menu` VALUES ('45', '修改专业信息', 'major:update', '/major/update', '43', '1', '2', null, null);
INSERT INTO `sys_menu` VALUES ('46', '删除专业', 'major:delete', '/major/delete', '43', '1', '3', null, null);
INSERT INTO `sys_menu` VALUES ('47', '查看所有专业', 'major:listAll', '/major/listAll', '43', '1', '4', null, null);
INSERT INTO `sys_menu` VALUES ('48', '学院管理', null, null, '35', '0', '5', null, null);
INSERT INTO `sys_menu` VALUES ('49', '添加学院', 'institute:insert', '/institute/insert', '48', '1', '1', null, null);
INSERT INTO `sys_menu` VALUES ('50', '修改学院信息', 'institute:update', '/institute/update', '48', '1', '2', null, null);
INSERT INTO `sys_menu` VALUES ('51', '删除学院', 'institute:delete', '/institute/delete', '48', '1', '3', null, null);
INSERT INTO `sys_menu` VALUES ('52', '查看所有学院', 'institute:listAll', '/institute/listAll', '48', '1', '4', null, null);
INSERT INTO `sys_menu` VALUES ('53', '上课管理', null, null, '0', '0', '6', null, null);
INSERT INTO `sys_menu` VALUES ('54', '课程表', null, null, '53', '0', '1', null, null);
INSERT INTO `sys_menu` VALUES ('55', '添加课程', 'lesson:insert', '/lesson/insert', '54', '1', '1', null, null);
INSERT INTO `sys_menu` VALUES ('56', '修改课程', 'lesson:update', '/lesson/update', '54', '1', '2', null, null);
INSERT INTO `sys_menu` VALUES ('57', '删除课程', 'lesson:delete', '/lesson/delete', '54', '1', '3', null, null);
INSERT INTO `sys_menu` VALUES ('58', '查看所有课程', 'lesson:listAll', '/lesson/listAll', '54', '1', '4', null, null);
INSERT INTO `sys_menu` VALUES ('59', '考勤管理', null, null, '53', '0', '2', null, null);
INSERT INTO `sys_menu` VALUES ('60', '教师发放签到', 'lesson:startCourse', '/lesson/startCourse', '59', '1', '1', null, null);
INSERT INTO `sys_menu` VALUES ('61', '学生签到', 'attendance:studentSignIn', '/attendance/studentSignIn', '59', '1', '2', null, null);
INSERT INTO `sys_menu` VALUES ('62', '查看考勤信息', 'attendance:listAll', '/attendance/listAll', '59', '1', '3', null, null);
INSERT INTO `sys_menu` VALUES ('63', '请假管理', null, null, '0', '0', '7', null, null);
INSERT INTO `sys_menu` VALUES ('64', '学生请假', 'leave:studentLeave', '/leave/studentLeave', '63', '1', '1', null, null);
INSERT INTO `sys_menu` VALUES ('65', '修改请假信息', 'leave:studentUpdate', '/leave/studentUpdate', '63', '1', '2', null, null);
INSERT INTO `sys_menu` VALUES ('66', '删除请假', 'leave:studentDelete', '/leave/studentDelete', '63', '1', '3', null, null);
INSERT INTO `sys_menu` VALUES ('67', '查看所有请假信息', 'leave:listAll', '/leave/listAll', '63', '1', '4', null, null);
INSERT INTO `sys_menu` VALUES ('68', '请假审批', 'leave:approval', '/leave/approval', '63', '1', '5', null, null);
INSERT INTO `sys_menu` VALUES ('69', '查看登录日志', 'loginLog:listAll', '/loginLog/listAll', '33', '1', '1', null, null);
INSERT INTO `sys_menu` VALUES ('70', '删除登录日志', 'loginLog:delete', '/loginLog/delete', '33', '1', '2', null, null);
INSERT INTO `sys_menu` VALUES ('71', '查看操作日志', 'operateLog:listAll', '/operateLog/listAll', '34', '1', '1', null, null);
INSERT INTO `sys_menu` VALUES ('72', '删除操作日志', 'operateLog:delete', '/operateLog/delete', '34', '1', '2', null, null);
INSERT INTO `sys_menu` VALUES ('73', '分配教师班级', 'teacher:assignTeacherClasses', '/teacher/assignTeacherClasses', '38', '1', '5', null, null);
INSERT INTO `sys_menu` VALUES ('74', '查看教师是否任教各个班级', 'teacher:myClass', '/teacher/myClass', '38', '1', '6', null, null);

效果如下

在这里插入图片描述

到此这篇关于Spring Boot + Mybatis Plus实现树状菜单的文章就介绍到这了,更多相关Spring Boot Mybatis Plus树状菜单内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Spring Boot + Mybatis Plus实现树状菜单的方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Spring Boot + Mybatis Plus怎么实现树状菜单

本篇内容介绍了“Spring Boot + Mybatis Plus怎么实现树状菜单”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、实体类
2023-06-25

Android提高之多级树形菜单的实现方法

一般来说在Android里要实现树形菜单,都是用ExpandableList(也有高手自己继承ListView或者LinearLayout来做),但是ExpandableList一般只能实现2级树形菜单。本文所述实例也依然使用Expanda
2022-06-06

java实现遍历树形菜单的方法有哪些

这篇文章将为大家详细讲解有关java实现遍历树形菜单的方法有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体如下。OpenSessionView实现:package org.web;import j
2023-05-30

实现javascript菜单的方法

本篇内容介绍了“实现javascript菜单的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!javascript菜单的实现方法:首先将菜
2023-06-14

Spring Boot 集成 Kafkad的实现方法

本篇内容介绍了“Spring Boot 集成 Kafkad的实现方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Spring Boot 作
2023-06-14

JAVA递归生成树形菜单的实现方法是什么

今天小编给大家分享一下JAVA递归生成树形菜单的实现方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。  递归生成一个
2023-06-26

MyBatis-Plus自定义通用的方法实现

MP自带的条件构造器虽然很强大,有时候也避免不了写稍微复杂一点业务的sql,本文主要介绍了MyBatis-Plus自定义通用的方法实现,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-05-19

react实现左侧菜单的方法

今天小编给大家分享的是react实现左侧菜单的方法,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。react实现左侧菜单的方法:1、定义好路由结构,代码如“const Router =
2023-07-04

Spring Boot之Validation自定义实现的方法

这篇“Spring Boot之Validation自定义实现的方法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Spring
2023-07-02

Python实现简单字典树的方法

本文实例讲述了Python实现简单字典树的方法。分享给大家供大家参考,具体如下:#coding=utf8 """代码实现了最简单的字典树,只支持由小写字母组成的字符串。 在此代码基础上扩展一下,就可以实现比较复杂的字典树,比如带统计数的,或
2022-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录