データベース テーブル:
メニュー ツリーが必要な場合は、このメソッド setPermissionsTree を呼び出すだけです。渡す必要があるのは 2 つの値だけです。最初の値はルート ノードで、2 番目の値はルート ノードです。 1 つは、すべてのメニュー表で十分であるということです。
/**
* 分页查询
*
* @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;
}
インターフェースをリクエストした後の実行結果: