json menu tree, recursive

Database table:
Insert image description here
Just call this method setPermissionsTree where a menu tree is needed. You only need to pass in two values. The first value is: root node, and the The second one is: all menu tables are enough.

 /**
     * 分页查询
     *
     * @param paging 筛选条件
     * @param paging      分页对象
     * @return 查询结果  有点问题
     */
    @GetMapping("findAll")
    public Results<List<SysMeun>> queryByPage(Paging paging) {
    
    
        List<SysMeun> sysMeunPageInfo=sysMeunDao.findList();
        //这里调用这个json树的话只需要传入2个值就可以了,第一个值为:根节点,第二个为:所有的菜单表即可
        List<SysMeun>  pageInfoResults=setPermissionsTree(1,sysMeunPageInfo);
        return Results.success(pageInfoResults);
    }
    public List<SysMeun> setPermissionsTree(Integer parent,List<SysMeun> pageInfoResults){
    
    
        for (SysMeun per : pageInfoResults) {
    
    
            //在这里判断它的根节点,parentId=0 在getParentId=0的为根节点
            if (per.getPid().equals(parent)) {
    
    
            //这里判断节点,是跟节点和子节点相等的话,那么久放进children中
                    per.setChildren(pageInfoResults.stream().filter(sysMeun1 -> per.getId().equals(sysMeun1.getPid()))
                   .collect(Collectors.toList()));
                    setPermissionsTree(per.getId(),pageInfoResults);
            }
        }
        //这里过滤最后的节点,只要根节点下的元素
        pageInfoResults = pageInfoResults.stream().filter(sysMeun -> sysMeun.getPid().equals(1)).collect(Collectors.toList());
        return pageInfoResults;
    }

The running results after requesting the interface:
Insert image description here

Guess you like

Origin blog.csdn.net/qq_14930709/article/details/124488729