这是我参与11月更文挑战的第17天,活动详情查看:2021最后一次更文挑战
完整示例代码地址如下:
github.com/Dr-Water/sp…
一、 权限树的问题由来
- 在开发中难免遇到一个有多级菜单结构树,或者多级部门的结构树,亦或是省市区县的多级结构,数据结构类似如下的json数据:
1 | json复制代码[ |
二、 解决方案
目前的解决方案主要有以下两种方案:
- 方案一:后端把所有需要的数据以一个大list返回前端,前端进行操作,把数据搞成树状结构
- 方案二: 后端在后端返回数据之前把数据搞成已经有层次结构的数据,方案二也分为两种解决方法
- 方法一:次性将数据查询出来,在java程序中进行树状结构的构建
- 方法二: 第一次将最高层次的数据查询出来,然后多次循环查询数据库将子数据查询出来
由于博主的前端水平有限,目前只能用后端的实现方式,再加上每次查询数据库的开销比较大,所以本文使用方案二的方法一进行验证
实现步骤
以菜单的结构树为例
- 准备mysql数据库的基础数据
- java的实体类:
1 | java复制代码@Data |
- java的dao层
1 | java复制代码@Mapper |
- mapper文件
1 | xml复制代码<?xml version="1.0" encoding="UTF-8" ?> |
- Controller层(由于是查询操作,并且没有复杂的操作,偷个懒就不写service层)
1 | java复制代码@RestController |
- 启动程序用postman进行测试:
返回的json数据如下:
1 | java复制代码[ |
参考链接:
java递归 处理权限管理菜单树或分类
一次性搞定权限树遍历——–权限树后台遍历的通用解决方案
(java后台)用户权限的多级菜单遍历方法
java 用递归实现球上下级(牵涉到对上级的去重)
java递归获取某个父节点下面的所有子节点
java递归算法总结
本文转载自: 掘金