Java递归如何实现菜单树
发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,这篇文章将为大家详细讲解有关Java递归如何实现菜单树,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。pom文件
千家信息网最后更新 2025年11月13日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 Listxml文件
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 List getMenuTree(){ 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安全错误
数据库的锁怎样保障安全
中国农业数据库
应用软件开发利用百度百科
浩劫前夕服务器
金仓数据库方案
阿里云服务器免费领取
软件开发应收集的材料
美团的数据库是哪来的
反恐精英怎么调服务器
哪个服务器不限速度和流量
手机社交软件开发
银行网络安全手抄报
德江im即时通讯软件开发
eps数据库比赛
sql数据库性别字典
大学生网络安全竞赛班会记录
绿色数据库实训环境
汕头专业软件开发价格走势
oracle数据库中存储大小
学网络技术学费多少钱
id数据库分布式
软件开发工程笔试
逆水寒玩家等级和服务器等级
网络技术应用全册ppt
党政机关网络安全方案
网络安全有你才完美
恒宇网络技术有限公司
人工网络技术
四川服务器电源哪个品牌好
王孝忠网络安全
高斯数据库查询表更新日期