下面三种方式灵活使用Java代码和mysql可满足查询所有子节点和查询所有父节点的递归查询
一、Java代码根据菜单id集合menuIdList递归查询所有子菜单id集合
public List<Long> getAllMenuList(List<Long> menuIdList){
//新建总集合存储所有子id
List<Long> allMenuIdList = new ArrayList<>();
//根据菜单idList递归获取子菜单
return digui(allMenuIdList, menuIdList);
}
//递归方法
private List<Long> digui(List<Long> allMenuIdList, List<Long> menuIdList){
//调用根据menuIdList查询子菜单id集合的方法查询下一级子菜单
List<Long> subMenuIdList = getSubByIdList(menuIdList);
//如果下一级不为空,加入总集合并用递归方法继续查询下一级
//如果下一级为空,跳出递归,返回总集合
if (subMenuIdList != null && subMenuIdList.size() > 0) {
allMenuIdList.addAll(subMenuIdList);
digui(allMenuIdList, subMenuIdList);
}
return allMenuIdList;
}
二、mysql使用sql根据菜单id递归查询所有子菜单
1.创建函数(根据菜单id查询所有子菜单id)
create function getAllSubMenuId(menuId INT)
r