Java实现查询菜单返回树结构
1.在DAO中的实现代码:
public List<TreeResult> parseMenuTree(List<TreeResult> list){List<TreeResult> result = new ArrayList<>();//1.获取第一个节点for (TreeResult menu:list) {if(null == menu.getParentId()){result.add(menu);}}//2.获取递归子节点for (TreeResult parent:result) {parent = menuChild(parent,list);}return result; }public TreeResult menuChild(TreeResult parent,List<TreeResult> list){for (TreeResult menu:list) {if(Objects.equals(parent.getId(),menu.getParentId())){parent.getChildren().add(menu);menu = menuChild(menu,list);}}return parent; } |
2.在Controller中的实现代码:
@ApiOperation(value = "动态菜单", httpMethod = "POST", produces = "application/json;charset=UTF-8") @ApiImplicitParam(value = "token", name = "token", dataType = "String", paramType = "header") @PostMapping("/api/menu/tree") public Result menuTree(HttpServletRequest request) {Map<String, Object> map = new HashMap<>();try {User user = userService.getDao().findById(Integer.valueOf(tokenService.valid(request.getHeader("token"))));if (user == null) {return Result.fail(902, "用户登录失效,请重新登录");}if (Enums.UserType.Driver == user.getType()) {return Result.fail(903, "该用户没有权限");}if (Enums.UserType.Passenger == user.getType()) {return Result.fail(903, "该用户没有权限");}//根据用户对应的角色获取角色对应的菜单idList<Integer> integers = roleAndMenuService.getDao().findByRoleId(user.getRoles());List<String> list = integers.stream().map(x -> x + "").collect(Collectors.toList());String menus = String.join(",", list);//根据菜单id获取对应的菜单List<TreeResult> tree = menuService.getDao().findTree(menus);//将菜单列表转成树结构List<TreeResult> treeResults = menuService.getDao().parseMenuTree(tree);map.put("list", treeResults);return Result.ok(map);} catch (Exception e) {e.printStackTrace();return Result.fail(901, e.getMessage());} } |
3.TreeResult实体类:
@Getter @Setter public class TreeResult {private Integer id;private String icon;private String menuName;private String menuType;private String menuUrl;private Integer parentId;private List<TreeResult> children = new ArrayList<TreeResult>();} |
Java实现查询菜单返回树结构相关推荐
- java oracle查询结果list取数,Oracle函数返回Table集合
Oracle table()函数查询函数返回的结果集 2015年12月13日 22:42:51 warrenjiang 阅读数:7452 版权声明:本文为博主原创文章,未经博主允许不得转载. http ...
- java文件流插入数据库_使用Java流查询数据库
java文件流插入数据库 在本文中,您将学习如何编写纯Java应用程序,这些应用程序能够处理现有数据库中的数据,而无需编写一行SQL(或类似的语言,例如HQL),而无需花费数小时将所有内容放在一起. ...
- 以下关于java的GUI菜单描述_第十九讲 菜单和JavaGUI综合设计
第十九讲菜单和JavaGUI综合设计 主要内容 菜单(JMenuBar.JMenu.JmenuItem) 菜单项的事件侦听处理 颜色选择器JColorChooser 文件选择器JFileChooser ...
- java json自定义_java返回json设置自定义的格式
springMvc返回Json中自定义日期格式 (一)输出json数据 springmvc中使用jackson-mapper-asl即可进行json输出,在配置上有几点: 1.使用mvc:annota ...
- Java数据库查询简介
利用Connection对象的createStatement方法建立Statement对象,利用Statement对象的executeQuery()方法执行SQL查询语句进行查询,返回结果集,再形如g ...
- java实现多级菜单(java递归)方法一
查询菜单树 public List<Map<String, Object>> queryCategoryInfo() {List<Map<String, Objec ...
- java流写入数据库_使用Java流查询数据库
java流写入数据库 在本文中,您将学习如何编写纯Java应用程序,这些应用程序能够使用现有数据库中的数据,而无需编写一行SQL(或类似的语言,如HQL),而无需花费数小时将所有内容放在一起. 准备好 ...
- 使用Java流查询数据库
在本文中,您将学习如何编写纯Java应用程序,这些应用程序能够处理现有数据库中的数据,而无需编写单行SQL(或类似的语言,例如HQL),也无需花费数小时将所有内容放在一起. 准备好应用程序之后,您将通 ...
- java中如果需要返回多个值怎么办
Java中如果需要返回多个值怎么办 首先我们明确一下:java方法的返回值只有一个,但是返回值的类型不限 有一种编程语言可以返回多个值 Python,实例如下: 运行结果如下: [whuang@hu ...
最新文章
- CentOS 6.3定制自动安装
- eclipse java8报错_eclipse4.3安装支持Java8插件,之后就报错无法打开eclipse,求解?
- 你是否应该成为一名全栈工程师?
- php 编写mysql,自己写的MySQL类
- 【渝粤题库】国家开放大学2021春1400机器人技术及应用题目
- 【JQGRID DOCUMENTATION】.学习笔记.5.Form Editing
- mybatis parametertype 多个参数
- WinForm中WebBrowser的使用
- Spring @RestController、@Controller区别
- 机器学习交易——如何使用回归预测股票价格?【翻译】
- pandas之在Excel上绘制柱形图
- 宝塔面板如何部署Java项目教程【新版】
- 使用Microsoft R Server进行机器学习和模型发布(2)
- flex builder 4.6 for Apple iOS应用程序打包(MAC)
- Typora中插入分页符
- 第七章 变量进阶与点阵LED 练习题
- vue3如何使用svg图片
- hive:建库建表、表分区、内部表外部表、数据导入导出
- 我发布在Steam的两款游戏
- bat计算机清理原理,科技教程:电脑如何一键清除垃圾bat
热门文章
- TQ210裸机编程(2)——LED流水灯
- Android UI开发第三十三篇——Navigation Drawer For Android API 7
- MFC 字符串截取成数组 wcstok
- mysql定时器每月执行一次_MySQL定时器可以设置执行次数吗
- canopen c++程序编写_JAVA、C、C++、Python同样是高级语言,为什么只有C和C++可以编写单片机程序?...
- 面向dba的linux shell 脚本简介,面向dba的linuxshell脚本简介.doc
- springboot actuator_Spring Boot 服务监控,健康检查,线程信息,JVM堆信息,指标收集,运行情况监控...
- 壳体有矩理论与实用计算机方法,《薄壳计算和理论》.pdf
- csharp为何不流行_【经营】做餐饮,算好加减法,你不赚谁赚
- 3.依赖注入 spring_di