Database table:
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: