1.需求场景

数据库后台返回树形结构菜单,实现菜单排序。

2.项目环境

spring spring mvc mybatis  mysql

3.实现方法

对应的实体类

private int id;// '主键ID',

private String cname;// '菜单名称',

private int pid;// '父级ID',默认0

private String redirect;// '菜单地址',

private String creator;// '创建者',

private String updatedate;// '修改日期',

private String updator;// '修改者',

private String createdate;// '创建日期',

private double sortid;//菜单排序字段 默认0

private List children;//父菜单下的子菜单封装树形数据

public class TreeUtil {

private int count = 0;

private List nodes;

public TreeUtil(List nodes){

this.nodes = nodes;

}

public List buildTree(){

List list = new ArrayList();

for (AuthUser node : nodes) {

if (node.getPid() == 0) {

list.add(node);

}

}

list = getSortChildren(list);

for (AuthUser node : list) {

build(node);

}

return list;

}

/***

* 构建权限树

* @Title: build

* @Description: TODO

* @param node

*/

private void build(AuthUser node){

List children = getChildren(node);

if (!children.isEmpty()) {

node.setChildren(children);

if(count <3){

//children.get(0).setChecked("true");//设置默认选中

count ++;

}

for (AuthUser child : children) {

build(child);

}

}

}

/**

*

* @Title: getChildren

* @Description: TODO 获取子节点

* @param node

* @return

*/

private List getChildren(AuthUser node){

List children = new ArrayList();

Integer id = node.getId();

for (AuthUser child : nodes) {

if (id==child.getPid()) {

children.add(child);

}

}

return getSortChildren(children);

// return children;

}

/**

*

* @Title: getChildren

* @Description: TODO 获取排序子节点

* @param node

* @return

*/

private List getSortChildren(List children){

MyCompare my = new MyCompare();

Collections.sort(children,my) ;

return children;

}

}自定义比较器

public class MyCompare implements Comparator{

@Override

public int compare(AuthUser o1, AuthUser o2) {

if(o1.getSortid()

return -1;

}else{

return 1;

}

}

}

数据库返回

public void getauthinfo(Map param){

List authList =userRoleService.getUserAuthTree(param); //执行查询

TreeUtil tree = new TreeUtil(authList);

//返回按照sortid排好序的树形结构的菜单

List datalist = tree.buildTree();

}

} catch (Exception e) {

e.printStackTrace();

}

}

java web 树形管理_java web 后台树形菜单排序相关推荐

  1. java web 用户管理_Java Web(九) 用户管理系统

    前面学习了一大堆,什么JSP,Servlet.jstl.el等等等,大多是一些死的东西,只要会其语法,知道怎么用就行了,所以做了一个小小的只有增删改查的小demo,为的就是熟悉这些知识.灵活运用起来. ...

  2. java web 监听器 例子_Java web技术应用---监听器

    监听器的定义 (专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生变化时,立即采取相应的行动) 定义:Servlet规范中定义的一种特殊的类,用于监听Servlet ...

  3. java web项目测试_java web项目怎么测试?

    慕仰1329654 java web项目测试用Web的测试工具,如HtmlUnit,JWebUnit等.main()方法就可以测试,在main方法中获得connection对象将他输出就可以了.如果正 ...

  4. java web 许令波_Java Web——Web概述

    已经很久没有更新博客了,过年忙着吃喝玩乐,就怠惰了一小下下?幸好这学期新开的课程都比较有趣--Java Web和Android.至少对于我自己来说,既充满挑战,又富有趣味. --[1.Web概述]-- ...

  5. java菜单管理模块_后台管理系统-菜单管理模块

    1 菜单管理页面设计 1.1 业务设计 菜单管理又称为资源管理,是系统资源对外的表现形式.本模块主要是实现对菜单进行添加.修改.查询.删除等操作.CREATE TABLE `sys_menus` ( ...

  6. 微服务java模块内存管理_Java 9模块服务

    微服务java模块内存管理 接线与查找 Java长期以来都有一个ServiceLoader类. 它是在1.6中引入的,但是自Java 1.2以来就使用了类似的技术. 一些软件组件使用了它,但是使用并不 ...

  7. java web权限设计_java web简单权限管理设计

    //打开菜单窗口 functionopenMenuDialog(){varselected=$("#list").datagrid('getSelected');if(select ...

  8. java web网上书店_java web简易网上书店项目系列,使用MVC模式(servlet+jstl+dbutils),开篇...

    一. 针对很多java web初学者入门困难的问题,笔者利用一个小型web项目,一步一步的展示java web开发方法,每一个章节引入一些java web开发的重点知识,让同学们可以将java web ...

  9. java cookie的有效期_Java Web cookie的有效期

    Java Web中cookie中的有效期 (1)Java Web后台添加cookieCookie emailCook = new Cookie(name2, "whuang"); ...

最新文章

  1. 还记得那场关于“分布式锁”的经典论战吗?
  2. myeclipse怎么集成Tomcat
  3. linux 进程代码,怎样从Linux终端管理进程:10个你必须知道的命令
  4. mysql是一个_Mysql
  5. 2019年北航OO第二单元(多线程电梯任务)总结
  6. sdoi r1前的注意事项
  7. leetcode python3 简单题125. Valid Palindrome
  8. 直方图匹配法(规则化)
  9. python官方下载电脑版-Python for windows
  10. 战舰少女服务器不显示,战舰少女进不去 闪退及连接不上解决方法
  11. Centos干净卸载apache-php-mysql
  12. python其他字符转换为ascii码
  13. 【Speedtest】网络测速工具(支持命令行测试)
  14. QTcpSocket
  15. windows 安装h2o_H2O-安装
  16. VSCode_VS2019体验背景靓图
  17. 有借必有贷,借贷必相等
  18. Jenkins镜像加速(清华大学镜像)
  19. 【go语言 socket编程系列】IPAddr类型及ResolveIPAddr方法
  20. 2022年A特种设备相关管理(电梯)考试题模拟考试平台操作

热门文章

  1. Android USB串口开发
  2. Direct2D教程(二)来看D2D世界中的Hello,World
  3. Android—开发过程中的相关注意事项
  4. IOS开发基础之截图、图片文字水印
  5. 考研计算机专业介绍,2021考研:计算机专业考试科目简介
  6. QT的安装以及测试是否成功
  7. mysql 列合并_mysql 列转行,合并字段的方法(必看)
  8. virtual box虚拟机分区后下一步看不见解决
  9. clickhouse 子查询_Clickhouse 查询分布式表子查询 (Distributed Subqueries )
  10. compare to造句及翻译_compare to造句