博客
关于我
LayUI动态树 案例
阅读量:793 次
发布时间:2023-01-30

本文共 2327 字,大约阅读时间需要 7 分钟。

数据库表分析与权限菜单管理系统开发

一、数据库表分析

该系统使用一个三级菜单表结构,t_oa_permission 表包含主要字段如下:

  • id:标识符,作为主键
  • name:菜单名称
  • url:对应的链接地址
  • description:菜单描述
  • pid:父级菜单ID
  • ismenu:控制是否为菜单(1表示菜单,0表示按钮)
  • displayno:显示顺序

处理思路

通过表结构分析,可以看出顶级节点为“权限管理”,其下为“书籍管理”和“订单管理”,再分别包含多个三级节点。整理思路:先将除顶级节点以外的节点分离,并将这些二级和三级节点归类到顶级节点下。

二、系统开发与实现

1. 实体类定义

com.zking.entity.Permission {    private long id; // 菜单编号    private String name; // 菜单名称    private String url; // accessing URL    private String description; // 菜单描述    private long pid; // 父级菜单编号    private int ismenu; // 1表示菜单,0表示按钮    private long displayno; // 显示顺序}

2. 工具类开发

com.zking.util.BuildTree {    public static TreeVo build(List
nodes) { if (nodes == null) { return null; } List
topNodes = new ArrayList<>(); for (TreeVo node : nodes) { if (node.getParentId() == null || "-1".equals(node.getParentId())) { topNodes.add(node); continue; } for (TreeVo parent : nodes) { if (parent.getId().equals(node.getParentId())) { parent.getChildren().add(node); node.setHasParent(true); parent.setChildren(true); } } } if (topNodes.size() == 1) { return topNodes.get(0); } else { TreeVo root = new TreeVo(); root.setParentId("-1"); root.setHasParent(false); root.setChildren(topNodes); root.setChecked(true); root.setText("顶级节点"); return root; } }}

三、功能实现

1. 菜单管理

  • 数据访问层
    MenuDao {    List
    list(Permission permission, PageBean pageBean); List
    menus(Permission permission, PageBean pageBean);}
  • 业务逻辑层
    {    List
    list = this.list(permission, pageBean); List
    trees = new ArrayList<>(); for (Permission permission : list) { TreeVo vo = new TreeVo(); vo.setId(permission.getId()); vo.setText(permission.getName()); vo.setParentId(permission.getPid()); trees.add(vo); } return BuildTree.build(trees);}

2. web 层实现

PermissionAction {    TreeVo menuTree = MenuDao.menu(permission, pageBean);    ResponseUtil.writeJson(resp, menuTree);}

四、界面展示

前端页面使用LayUI框架构建,通过auer的方法加载菜单数据:

转载地址:http://wcgyk.baihongyu.com/

你可能感兴趣的文章
Java创建elasticsearch的model时,如何配置使用ik分词器?
查看>>
java加密解密
查看>>
java勤工助学管理系统
查看>>
JAVA反射
查看>>
Java反射
查看>>
java反射介绍
查看>>
Java反射代码编写
查看>>
JAVA反射机制
查看>>
JAVA反射机制
查看>>
java反射机制完成List map 与List javabean ,List 对象 之间的互相转换
查看>>
Java反射获取private属性和方法(子类,父类,祖先....)
查看>>
java反射(1):Class代表类
查看>>
Java反序列化-CC2分析,从零基础到精通,收藏这篇就够了!
查看>>
Java反序列化和JNDI注入漏洞案例实战
查看>>
Java反序列化测试
查看>>
JAVA反序列化漏洞修复解决方法
查看>>
java反应式框架Reacto中的Mono和Fiux
查看>>
java反编译工具--jd-gui
查看>>
java取整和java四舍五入方法
查看>>
Java可变参数列表
查看>>