因为项目需要,页面上需要树形结构的数据进行展示(类似下图这样),因此需要后端返回相应格式的数据。
不说废话,直接开干!!!
我这里用的是springboot+mybatis-plus+mysql,示例的接口是查询一级权限以及二级权限、三级权限整个权限树…
下面是导入的maven依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--数据库连接--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.21</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!--mybatis增强工具--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.0</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.0.6</version> </dependency>
下面是实体类Permission
@Data public class Permission implements Serializable { @TableId private String permissionId; @NotNull(message = "权限名称不能为空") private String permissionName; /** * 权限标识 */ @NotNull(message = "权限标<strong style="color:transparent">来2源gaodaima#com搞(代@码&网</strong>识不能为空") private String permissionCode; /** * 父菜单ID,如果是-1就表示是一级权限菜单。 */ @NotBlank(message = "父菜单ID不能为空") private String parentId; /** * 前端URL访问接口路径 */ private String path; /** * 排序值 */ private Integer sort; /** * 创建时间 */ private LocalDateTime createTime; /** * 更新时间 */ private LocalDateTime updateTime; /** * 0--正常 1--删除 */ private String delFlag; public Permission() { this.permissionId = IdUtil.simpleUUID(); }
树形结点类
@Data public class TreeNode { protected String id; protected String parentId; protected List<TreeNode> children = new ArrayList<TreeNode>(); protected boolean hasChildren; public void addTreeNode(TreeNode node){ children.add(node); } }
树形结点详细信息类
@Data @EqualsAndHashCode(callSuper = true) public class PermissionTree extends TreeNode implements Serializable { private String permissionName; private String permissionCode; private String path; private Integer sort; private String label; private boolean hasChildren; public PermissionTree() { } }