栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

多级菜单嵌套查询实现(java8 Stream)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

多级菜单嵌套查询实现(java8 Stream)

    上篇讲到嵌套的数据类型的查询方式:三级菜单嵌套查询实现(collection标签),下面提供一种java Stream流的实现方式.主要的实现思路是将所有的菜单从数据库一次性查询出来,数据组装的方式在逻辑层进行处理,具体实现:先将顶级菜单筛选出来,然后进行递归遍历筛选出该菜单的所有子菜单信息,从性能的角度出发,整个实现过程使用stream流方式,当然从实现来讲,传统的for循环也是可以实现递归遍历组装数据,本文不做展开.数据查询上还需要collection标签,是因为菜单对象ManageUserMenu中子对象Menumeta需要借助标签进行数据组装.
    实体类同上篇文件,这里不再展示,参考文章:三级菜单嵌套查询实现(collection标签)
    数据库连接层:

   // 查询所有菜单
    List findAllManageMenu();

    配置文件:

    
        
        
        
        
        
        
        
        
        
        
    
    
        select * from manage_menu
    

    逻辑处理层:

	public void test3(){
		// 查询所有的菜单信息
		List allManageMenu = manageUserMapper.findAllManageMenu();
		// 按照格式进行组装
        List manageUserMenuList = 
        allManageMenu.stream().filter(manageUserMenu -> manageUserMenu.getParentId() == 0).map(manageUserMenu -> {               manageUserMenu.setChildren(getChildrenMenuList(manageUserMenu,allManageMenu);
                    return manageUserMenu;
                }).collect(Collectors.toList());
        System.out.println(manageUserMenuList);

    }

    // 查询指定菜单下面的所有子菜单信息
	public List getChildrenMenuList(ManageUserMenu origin,List allManageMenu){
        List childrenMenuList = allManageMenu.stream()
				.filter(manageUserMenu -> {
					return manageUserMenu.getParentId()==origin.getMenuId();
				})
				.map(
                manageUserMenu1 -> {
                    if (manageUserMenu1.getParentId() == origin.getMenuId()) {
                        manageUserMenu1.setChildren(getChildrenMenuList(manageUserMenu1, allManageMenu));
                    }
                    return manageUserMenu1;
                }
        ).collect(Collectors.toList());
        return childrenMenuList;
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/462331.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号