java菜单递归,java递归树结构

  java菜单递归,java递归树结构

  pom文件

  ?可扩展标记语言版本=1.0 编码=UTF八号?项目xmlns= http://maven。阿帕奇。org/POM/4。0 .0 xmlns : xsi= http://www。w3。org/2001/XML schema-instance xsi :架构位置= http://maven。阿帕奇。org/POM/4。0 .0 https://maven.apache.org/xsd/maven-4.0.0.xsd模型版本4。0 .0/型号版本父groupIdorg.springframework.boot/groupId artifact id spring-boot-starter-parent/artifact id!- 可选修改:之前的一些案例按照此版本搭建-版本2.1.3 .发布/版本相对路径/!-从存储库查找父项-/父groupIdcom.example/groupId artifact id演示/artifactId版本0。0 .1-快照/版本名称演示/名称描述Spring Boot的演示项目/描述属性Java。版本1.8/Java。版本/属性依赖项groupIdorg.springframework.boot/groupId artifact id spring-boot-starter/artifact id/dependency groupIdorg.springframework.boot/groupId artifact id spring-boot-starter-web/artifact id/dependency groupIdorg.springframework.boot/groupId artifact id spring-boot-starter-starter-dependency-starter-artifact-starter-artifact弹簧靴整合框架的核心依赖-依赖groupIdorg.mybatis.spring.boot/groupId artifactId my batis-spring-boot-starter/artifactId 2。1 .数字一(one)版/版本/依赖关系!- 数据库驱动-靠

  ency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <!--pageHelper分页插件--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.3.0</version> </dependency> <!-- 引入lombok,简化pojo类--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <!-- 引入Mybatis plus 依赖 增强mybatis--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.2</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build></project>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<Menu> menuChildren;}

xml文件

 

  

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.qcby.mapper.MenuMapper"> <select id="selectByPid" resultType="com.qcby.entity.Menu"> SELECT * FROM menu WHERE pid=#{pid} </select> <select id="selectAll" resultType="com.qcby.entity.Menu"> SELECT * FROM menu </select> <select id="selectAllNotBase" resultType="com.qcby.entity.Menu"> SELECT * FROM menu where pid!= 0 </select></mapper>

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<Menu> { List<Menu> selectByPid(Integer pid); List<Menu> selectAll(); List<Menu> selectAllNotBase();}

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<Menu> { List<Menu> selectByPid(Integer pid); List<Menu> selectAll(); List<Menu> 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 ServiceImpl<MenuMapper, Menu> implements MenuService { @Autowired private MenuMapper menuMapper; @Override public List<Menu> selectByPid(Integer pid) { return menuMapper.selectByPid(pid); } @Override public List<Menu> selectAll() { return menuMapper.selectAll(); } @Override public List<Menu> 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<Menu> getMenuTree(){ List<Menu> menusBase = menuMapper.selectByPid(0); List<Menu> menuLNotBase = menuMapper.selectAllNotBase(); for (Menu menu : menusBase) { List<Menu> menus = iterateMenus(menuLNotBase, menu.getId()); menu.setMenuChildren(menus); } return menusBase; } /** *多级菜单查询方法 * @param menuVoList 不包含最高层次菜单的菜单集合 * @param pid 父类id * @return */ public List<Menu> iterateMenus(List<Menu> menuVoList,String pid){ List<Menu> result = new ArrayList<Menu>(); for (Menu menu : menuVoList) { //获取菜单的id String menuid = menu.getId(); //获取菜单的父id String parentid = menu.getPid(); if(StringUtils.isNotBlank(parentid)){ if(parentid.equals(pid)){ //递归查询当前子菜单的子菜单 List<Menu> iterateMenu = iterateMenus(menuVoList,menuid); menu.setMenuChildren(iterateMenu); result.add(menu); } } } return result; }}

结果展示

 

  

 

  

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注盛行IT的更多内容!

 

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: