如何使用Java实现树形菜单对象
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,本篇内容主要讲解"如何使用Java实现树形菜单对象",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何使用Java实现树形菜单对象"吧!1、SysMenup
千家信息网最后更新 2025年11月08日如何使用Java实现树形菜单对象
本篇内容主要讲解"如何使用Java实现树形菜单对象",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何使用Java实现树形菜单对象"吧!
1、SysMenu
package com.zy.shiro.domain;import com.baomidou.mybatisplus.annotation.IdType;import com.baomidou.mybatisplus.annotation.TableField;import com.baomidou.mybatisplus.annotation.TableId;import com.fasterxml.jackson.annotation.JsonInclude;import io.swagger.annotations.ApiModel;import lombok.Data;import lombok.EqualsAndHashCode;import lombok.experimental.Accessors;import java.io.Serializable;import java.util.ArrayList;import java.util.List;/** * sys_menu * @author */@Data@EqualsAndHashCode(callSuper = false)@Accessors(chain = true)@ApiModel(value="SysMenu对象", description="菜单管理")public class SysMenu implements Serializable { @TableId(value = "menu_id", type = IdType.AUTO) private Long menuId; /** * 父菜单id,父菜单为0 */ private Long parentId; /** * 菜单名称 */ private String menuName; /** * 菜单url */ private String url; /** * 授权(多个用逗号分隔,如:user:list,user:create) */ private String permisions; /** * 类型 0:目录 1:菜单 2:按钮 */ private Integer menuType; /** * 菜单图标 */ private String icon; /** * 排序 */ private Integer orderNum; @TableField(exist = false) private List list;// @JsonInclude(value = JsonInclude.Include.NON_EMPTY)// private List child=new ArrayList<>(); private static final long serialVersionUID = 1L;} 2、TreeNode
package com.zy.common.tree;import com.fasterxml.jackson.annotation.JsonInclude;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import sun.reflect.generics.tree.Tree;import java.io.Serializable;import java.util.ArrayList;import java.util.List;@Data@AllArgsConstructor@NoArgsConstructorpublic class TreeNode implements Serializable { private Integer id; private Integer pid; private String title; private String icon; private String href; private String target; private Boolean spread; @JsonInclude(value = JsonInclude.Include.NON_EMPTY) private List child=new ArrayList<>(); /** * 登陆成功之后系统主而需要的菜单树的json对象构造器 * @param id * @param pid * @param title * @param icon * @param href * @param target * @param spread */ public TreeNode(Integer id, Integer pid, String title, String icon, String href, String target, Boolean spread) { this.id = id; this.pid = pid; this.title = title; this.icon = icon; this.href = href; this.target = target; this.spread = spread; } public static class TreeNodeBuilder{ /** * * @param treeNodes 要生成有层级关系的源数据 * @param topId 最顶层的pid 根节点的pid * @return */ public static List build(List treeNodes,Integer topId){ List nodes=new ArrayList<>(); for (TreeNode n1 : treeNodes) { if(n1.getPid().equals(topId)){ //说明n1节点是 nodes.add(n1); } for (TreeNode n2 : treeNodes) { if(n2.getPid().equals(n1.getId())){ //说明n2是n1的子节点 应该放到n1的clild里面 n1.getChild().add(n2); } } } return nodes; } }} 3、SysMenuServiceImpl
根据用户id查询该用户所拥有的菜单
// 1 用户的id 查询角色 List4、测试
@Test public void test3() { SysUser sysUser = sysUserMapper.selectById(1); List menuList = null; if (null != sysUser) { menuList = this.sysMenuService.queryeMenuByUserIdForList(sysUser.getUserId()); List treeNodes=new ArrayList<>(); for (SysMenu m : menuList) { treeNodes.add(new com.zy.common.tree.TreeNode(m.getMenuId().intValue(),m.getParentId().intValue(),m.getMenuName(),m.getIcon(),m.getUrl(),"_self",Boolean.TRUE)); } List build = com.zy.common.tree.TreeNode.TreeNodeBuilder.build(treeNodes, 0); System.out.println(build); 到此,相信大家对"如何使用Java实现树形菜单对象"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
菜单
对象
查询
树形
用户
节点
内容
数据
角色
学习
实用
更深
成功
兴趣
名称
图标
多个
实用性
实际
层级
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
温州英拓网络技术
udp服务器的设计
政府为什么要维护网络安全
鹏达软件开发有限公司
数据库原理及应用第二版答案
如何建立虚拟服务器
数据库模型分多对多
网络安全 协调联动
12306服务器ip
编办网络安全工作汇报
富士胶片中国软件开发中心
mq服务器是做什么的
学习网络安全知识的感想
瓜州区网络安全培训
陌陌公司有多少台服务器
营销软件开发加盟
解放军的网络安全保密规定
手机访问代理服务器
网络技术考三级有什么用
软件开发操作系统
学校网络技术部部长职责
广东安卓软件开发平台
广州风速网络技术有限公司
国风网络技术有限公司电话
常熟数据库备份方案
安全补丁组件正在连接服务器
电力代维软件开发
星露谷物语如何开启新服务器
肥西网络技术咨询怎么样
网站开发用什么数据库