一:前言

最近老师布置了给多级菜单的作业,感觉蛮有意思的,可以提升自己的逻辑!下面我写个简易版的多级菜单,本人还是菜鸟,欢迎各位给予宝贵的建议!

二:正文

由于是给各位演示,所有我把涉及的其他条件全省略了,只做了给最简单的,以便大家能更好的理解我的思路

1,首先是数据库的设计

DROP TABLE IF EXISTS `t_category`;
CREATE TABLE `t_category` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '标识目录的唯一id',`parent_id` int(11) DEFAULT NULL COMMENT '存储父级目录的id,0代表一级目录',`name` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '目录的名称',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

2.java后端代码

① 对应数据库的实体类

public class Category {private int id;private int parentId;private String name;
}

② 返回给前端的实体类  //注意写一个有参的构造方法,方便我们把Category的数据注入进来

public class CategoryTwo extends Category{private List<CategoryTwo> categorieTwos;public CategoryTwo(){}//这个有参构造方法方便我们为属性赋值即把categoy的成员变量的值赋值到自身中public CategoryTwo(Category category){super(category.getId(),category.getParentId(),category.getName());}
}

③ 具体实现

//多级目录public void findCategoryAll(){//查询出所有的目录数据List<Category> categorys = categoryMapper.findCategoryAll(null);//这个大家自己完成//存放所有一级目录List<CategoryTwo> categoryTows = new ArrayList();//找出一级目录,即 parentId = 0 的目录for(Category category :categorys){if(category.getParentId() == 0){CategoryTwo categoryTwo = new CategoryTwo(category);categoryTows.add(categoryTwo);//存入一级目录集合中}}//利用递归,找出所有一级目录的List<CategoryTwo>,这里我把具体实现包装到 findSubCategory()方法中了categoryTows = findSubCategory(categorys,categoryTows);//最后就完成了,把数据按需求返回给前端就可以了。System.out.println(categoryTows);}//找出List<CategoryTwo>中所有目录的子级目录public List<CategoryTwo> findSubCategory(List<Category> categorys,List<CategoryTwo> categoryTwos){for (CategoryTwo categoryTwo:categoryTwos) {//找出自身的子级目录,存放到List<CategoryTwo>中去List<CategoryTwo> categoryTwos2 = new ArrayList<CategoryTwo>();for (Category category:categorys){//如果自身的id = 与某个目录的parentId 相等,则这个目录是自身的子级目录if(categoryTwo.getId() == category.getParentId()){categoryTwos2.add(new CategoryTwo(category));}}//所有子级目录找到后,再回调findSubCategory()方法 让子级目录找到自己的子级List<CategoryTwo> categoryTwos3 = findSubCategory(categorys,categoryTwos2);//categoryTwos3真正的List<categoryTwo>,把他添加到自身categoryTwo.setCategorieTwos(categoryTwos3);}return categoryTwos;//返回注入好的对象}

三:总结

核心就是那个回调的方法,只要把这个搞清楚了,那就很容易了

Java 实现 多级菜单相关推荐

  1. mysql vue 菜谱_vue+ java 实现多级菜单递归效果

    效果如图: 大概思路:树形视图使用的是vue官方事例代码,java负责封装数据,按照vue官方事例的数据结构封装数据即可.有两个需要关注的点: 1.官方事例的数据结构是一个对象里面包含着集合,而不是一 ...

  2. java递归实现多级菜单栏_vue+ java 实现多级菜单递归效果

    效果如图: 大概思路:树形视图使用的是vue官方事例代码,java负责封装数据,按照vue官方事例的数据结构封装数据即可.有两个需要关注的点: 1.官方事例的数据结构是一个对象里面包含着集合,而不是一 ...

  3. java 递归查询多级菜单

    类目表是多级目录表,数据如下: 想获取所有数据的多级目录,代码如下: /*** 获取树形接口的 类目** @return*/@Overridepublic List<ExamCategory&g ...

  4. Java Excel 多级菜单联动原理与实现(可扩展)

    Java Excel级联菜单实现(可扩展) 为什么要写这篇文章呢,因为看到了有人在提问如何用Java做Excel的级联菜单效果.帖子详情:http://spring4all.com/forum-pos ...

  5. java实现多级菜单(java递归)方法二

    @Autowiredprivate TreeBuilder treeBuilder; /*** 获取树状结构数据*/@RequestMapping("menu/queryMenuTree&q ...

  6. java实现多级菜单(java递归)方法一

    查询菜单树 public List<Map<String, Object>> queryCategoryInfo() {List<Map<String, Objec ...

  7. java中菜单分几级_JAVA构造多级菜单

    很多时候我们在前段展现时要用到多级菜单,刚好今天做了个简单的,整理一下: 首先我们要确定要展现的菜单结构: --根菜单 --一级菜单A --二级菜单A --三级菜单A --一级菜单B 与Hiberna ...

  8. java递归实现多级菜单栏_Java构建树形菜单以及支持多级菜单的实例代码

    这篇文章主要介绍了Java构建树形菜单的实例代码(支持多级菜单),非常不错,具有参考借鉴价值,需要的朋友可以参考下 效果图:支持多级菜单. 菜单实体类: public class Menu { // ...

  9. java多级菜单列表怎么做_JAVA构造多级菜单

    很多时候我们在前段展现时要用到多级菜单,刚好今天做了个简单的,整理一下: 首先我们要确定要展现的菜单结构: --根菜单 --一级菜单A --二级菜单A --三级菜单A --一级菜单B 与Hiberna ...

最新文章

  1. H3C 静态默认路由配置
  2. python里实现DSL
  3. 计算机视觉,图像处理,图像分析,机器人视觉和机器视觉是彼此紧密关联的学科
  4. [原创].使用Nios II 9.1中的Flash Programmer无法固化程序到EPCS上
  5. Outlook 2010 配置关联QQ邮箱
  6. 本题要求实现一个用选择法对整数数组进行简单排序的函数。_通俗易懂讲 Python 算法:快速排序...
  7. java输出不同颜色_Java设计模式-策略模式、状态模式
  8. 本来都对象棋失去兴趣了, 是特殊的原因让我又开始从侧面搞象棋方面的擦边的游戏...
  9. [挑战杯] 火焰检测
  10. 解决virtualbox导入虚拟机报错E_INVALIDARG (0x80070057)问题
  11. Linux操作系统的性能将主要取决于,高校邦Linux操作系统安全与性能调优章节测试答案...
  12. 做出正确选择 重设精彩人生
  13. 首都师范 博弈论 6 5 1有限次的重复博弈
  14. Subtitle-ass-srt
  15. nginx正向代理,提供爬虫请求代理
  16. 【PM学习笔记】酸梅干超人 - 零基础学B端UI设计 学习笔记
  17. 嵌入式课设-基于GPS模块的校园定位程序
  18. 2021-07-20 快捷键学习
  19. 《CISP》(七)信息安全支撑技术——访问控制
  20. Java中获取整点时间戳

热门文章

  1. 计算机科学技术学院博逸楼,银川西路附近校内附属设施
  2. 16 `bs对象.节点名div.属性contents` children descendants 获取子节点 子孙节点
  3. Reac Hooks
  4. 【我的数据挖掘竞赛之旅(一)】快手活跃用户预测——2018中国高校计算机大赛第三届之大数据挑战赛(Big Data Challenge)
  5. Android MediaCodec踩坑笔记
  6. 浙里办 前端上传部署报错
  7. linux shell之易经起卦
  8. 【何不三连】JS面向对象最后一弹-多态篇(羽化升仙)
  9. buuctf-Real-[ThinkPHP]5-Rce
  10. 分布式架构驭数而行,海量数据方能有备无患