无限自关联表
所谓的无限自关联表就是类似于下图,有parent_id的这种,需要分级显示
实体类
实体类需要添加一个属性--下级列表 List<SysMenu> children;这个属性中是我们该实体的孩子结点
工具类处理分级树
public class MenuHelper {public static List<SysMenu> buildTree(List<SysMenu> sysMenus) {List<SysMenu> tree=new ArrayList<>();//查找根节点for (SysMenu sysMenu : sysMenus) {if (sysMenu.getParentId()==0){tree.add(findChildren(sysMenu,sysMenus));}}return tree;}//查找某结点的孩子结点private static SysMenu findChildren(SysMenu sysMenu, List<SysMenu> sysMenus) {//先将该结点的孩子集合置为空,随后再拿出集合添加sysMenu.setChildren(new ArrayList<>());for (SysMenu menu : sysMenus) {if (menu.getParentId().longValue()==sysMenu.getId().longValue()){//是该结点的孩子就插入,再递归查询这个孩子的孩子sysMenu.getChildren().add(findChildren(menu,sysMenus));}}return sysMenu;}
}
Service层业务处理
public List<SysMenu> findNodeList() {//查询所有的结点List<SysMenu> sysMenus= sysMenuMapper.selectAllMenus();if (CollectionUtil.isEmpty(sysMenus)) return null;//处理分级逻辑List<SysMenu> treeList = MenuHelper.buildTree(sysMenus); //构建树形数据return treeList;}
返回结果
我们返回的结果就可以分级的显示,前端就利用element-plus中的表格即可,然后js赋值