Java递归如何实现菜单树
发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章将为大家详细讲解有关Java递归如何实现菜单树,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。pom文件
千家信息网最后更新 2025年01月18日Java递归如何实现菜单树
这篇文章将为大家详细讲解有关Java递归如何实现菜单树,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
pom文件
4.0.0 org.springframework.boot spring-boot-starter-parent 2.1.3.RELEASE com.example demo 0.0.1-SNAPSHOT demo Demo project for Spring Boot 1.8 org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-thymeleaf org.springframework.boot spring-boot-starter-test test org.mybatis.spring.boot mybatis-spring-boot-starter 2.1.1 mysql mysql-connector-java runtime com.github.pagehelper pagehelper-spring-boot-starter 1.3.0 org.projectlombok lombok true com.baomidou mybatis-plus-boot-starter 3.4.2 org.springframework.boot spring-boot-maven-plugin
application.yaml文件
spring: datasource: url: jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf-8&serverTimezone=CTT username: root password: 2020 driver-class-name: com.mysql.cj.jdbc.Driverpagehelper: helperDialect: mysql reasonable: true # 修改默认值# mybatis-plus配置mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl typeAliasesPackage: com.qcby.entity mapperLocations: classpath:mapper/*.xml # 全局配置id自增 => global-config: db-config: id-type: auto
数据库表设计如下
SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- ------------------------------ Table structure for menu-- ----------------------------DROP TABLE IF EXISTS `menu`;CREATE TABLE `menu` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键id', `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '名称', `pid` bigint(20) DEFAULT NULL COMMENT '父级id', PRIMARY KEY (`id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Compact;-- ------------------------------ Records of menu-- ----------------------------INSERT INTO `menu` VALUES (1, '主菜单1', 0);INSERT INTO `menu` VALUES (2, '主菜单2', 0);INSERT INTO `menu` VALUES (3, '主菜单3', 0);INSERT INTO `menu` VALUES (4, '菜单1.1', 1);INSERT INTO `menu` VALUES (5, '菜单1.2', 1);INSERT INTO `menu` VALUES (6, '菜单1.1.1', 4);INSERT INTO `menu` VALUES (7, '菜单2.1', 2);INSERT INTO `menu` VALUES (8, '菜单2.2', 2);INSERT INTO `menu` VALUES (9, '菜单1.1.2', 4);SET FOREIGN_KEY_CHECKS = 1;
菜单类
package com.qcby.entity;import lombok.Data;import java.util.List;@Data//lombok实现简化 get、set、tostring方法public class Menu { // 菜单id private String id; //菜单名称 private String name; // 父菜单id private String pid; // 子菜单 private List
xml文件
Mapper层
package com.qcby.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;import com.qcby.entity.Menu;import org.apache.ibatis.annotations.Mapper;import java.util.List;@Mapperpublic interface MenuMapper extends BaseMapper
service层
package com.qcby.service;import com.baomidou.mybatisplus.extension.service.IService;import com.qcby.entity.Menu;import java.util.List;public interface MenuService extends IService{ List selectByPid(Integer pid); List selectAll(); List selectAllNotBase();}
serviceImpl
package com.qcby.service.Impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;import com.qcby.entity.Menu;import com.qcby.mapper.MenuMapper;import com.qcby.service.MenuService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.List;@Servicepublic class MenuServiceImpl extends ServiceImplimplements MenuService { @Autowired private MenuMapper menuMapper; @Override public List selectByPid(Integer pid) { return menuMapper.selectByPid(pid); } @Override public List selectAll() { return menuMapper.selectAll(); } @Override public List selectAllNotBase() { return menuMapper.selectAllNotBase(); }}
controller层
package com.qcby.controller;import com.baomidou.mybatisplus.core.toolkit.StringUtils;import com.qcby.entity.Menu;import com.qcby.mapper.MenuMapper;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import java.util.ArrayList;import java.util.List;@RestController@RequestMapping("menu")public class MenuController { @Autowired private MenuMapper menuMapper; @RequestMapping("/getMenuTree") public ListgetMenuTree(){ List menusBase = menuMapper.selectByPid(0); List menuLNotBase = menuMapper.selectAllNotBase(); for (Menu menu : menusBase) { List menus = iterateMenus(menuLNotBase, menu.getId()); menu.setMenuChildren(menus); } return menusBase; } /** *多级菜单查询方法 * @param menuVoList 不包含最高层次菜单的菜单集合 * @param pid 父类id * @return */ public List iterateMenus(List menuVoList,String pid){ List result = new ArrayList (); for (Menu menu : menuVoList) { //获取菜单的id String menuid = menu.getId(); //获取菜单的父id String parentid = menu.getPid(); if(StringUtils.isNotBlank(parentid)){ if(parentid.equals(pid)){ //递归查询当前子菜单的子菜单 List iterateMenu = iterateMenus(menuVoList,menuid); menu.setMenuChildren(iterateMenu); result.add(menu); } } } return result; }}
结果展示
关于"Java递归如何实现菜单树"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
菜单
递归
文件
篇文章
名称
方法
更多
查询
配置
不错
实用
最高
全局
内容
层次
数据
数据库
文章
知识
结果
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
服务器提升
内网ntp时间服务器
河南知名软件开发报价
节后网络安全工作简报
合肥众信网络技术有限公司
手机网络安全防护怎么关
lisp创建数据库
数据库系统软件的定义
宁国自动软件开发服务参考价格
美团软件开发福州
服务器升级后无法进入桌面
昌平区网络技术软件
给数据库中已有字段添加数据
街霸5为什么不能登陆服务器
共享电动车还车显示服务器异常
商洛网络技术产品介绍
超星数字图书馆数据库的结果分析
银川展厅多媒体软件开发公司
阿里云神龙架构服务器设置
子账号用户角色权限数据库
云服务器如何保证安全
访问excel数据库
长沙石油软件开发报价
医院信息系统his数据库
gt7赛车无法与服务器建立连接
特斯拉中国数据服务器
泉州直播带货软件开发
国家网络安全管理工作部署
forger怎么安装在服务器上
考研密码学与网络安全复习资料