如何使用Java实现树形菜单对象
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,本篇内容主要讲解"如何使用Java实现树形菜单对象",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何使用Java实现树形菜单对象"吧!1、SysMenup
千家信息网最后更新 2025年02月23日如何使用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 查询角色 List
4、测试
@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安全错误
数据库的锁怎样保障安全
在线教研要小心网络安全心得
cnkl是学术搜索数据库吗
汕头餐饮软件开发费用是多少
做一个静态网页需要数据库吗
数据库资料选择商店语句
联通网络技术支持
网站服务器空间多少合适
亿恩科技互联网
软件开发合同 不交税
福州学习软件开发
笔记本设置运行数据库导向
mfc界面是啥软件开发
服务器和电脑哪个安全
家中服务器
网络技术发达国家
网络安全的四个特征是什么
数据库实训题目表
李沧区玖玖合一软件开发中心
计算机网络安全素材
服务器如何禁止重启
cs服务器ip地址
云服务器装盗版数据库
重庆企业中台数据库
互联网 科技ppt
北京捷瑞网络技术怎样
服务器安全控制指标
介绍网络技术的公众号
山西本地软件开发市场价
不同时间的数据构建数据库
对日软件开发的认识