Java recursive query tree list.

The requirement is that the front end needs a tree selector, so it needs to provide the front end with tree data

Post code directly!!

 @RequestMapping(method = RequestMethod.POST, value = "/queryTreeList")
    public void queryTreeList(HttpServletRequest request,HttpServletResponse response,@RequestBody Map param){
        try {
            List<Map> res = new ArrayList<>();
            QueryWrapper<BuiSyFunction> wrapper = initWrapper(param);
            wrapper.eq("state".1);
            wrapper.eq("function_parent_id".0);
            // Query all level-1 menus
            List<BuiSyFunction> functions = buiSyFunctionService.list(wrapper);
// List list = new ArrayList<>();
            // Iterate through the first level menu
            for (BuiSyFunction function : functions){
                Map map = new HashMap();
                Long id = function.getId();
                map.put("value",id);
                map.put("label",function.getFunctionName());
                // Recursively query submenus
                List<Object> childFunctions = getChildFunctions(id);
                if (childFunctions.size() > 0){
                    map.put("children",childFunctions);
                }
                res.add(map);
            }
            renderResult(response,res);
        }catch(Exception e){ e.printStackTrace(); }}public List<Object> getChildFunctions(Long parentId){
        List<Object> res = new ArrayList<>();
        QueryWrapper<BuiSyFunction> wrapper = new QueryWrapper<>();
        wrapper.eq("state".1);
        wrapper.eq("function_parent_id",parentId);
        // Query the menu by parent Id
        List<BuiSyFunction> functions = buiSyFunctionService.list(wrapper);
        for(BuiSyFunction function : functions){
            Map map = new HashMap();
            Long id = function.getId();
            map.put("value",id);
            map.put("label",function.getFunctionName());
            // Recursively query submenus
            List<Object> childFunctions = getChildFunctions(id);
            if (childFunctions.size() > 0){
                map.put("children",childFunctions);
            }
            res.add(map);
        }
        return res;
    }
Copy the code