MyBatis

您所在的位置:网站首页 mybatisplus树形结构查询 MyBatis

MyBatis

2024-07-05 21:27| 来源: 网络整理| 查看: 265

方式一:

这里给出最关键的二段代码

查询入口函数

@Override public List list() { EntityWrapper wrapper = new EntityWrapper(); wrapper.eq("parent_id", 0) .or() .isNull("parent_id") .orderBy("sort"); // 得到一级节点资源列表 List resources = this.selectList(wrapper); if (resources != null && resources.size() > 0) { resources.forEach(this::findAllChild); } return resources; }

递归查询函数findAllChild

public void findAllChild( SysResource resource ) { EntityWrapper wrapper = new EntityWrapper(); wrapper.eq("parent_id", resource.getId()).orderBy("sort"); // 首次进入这个方法时,查出的是二级节点列表 // 递归调用时,就能依次查出三、四、五等等级别的节点列表, // 递归能实现不同节点级别的无限调用,这个层次不易太深,否则有性能问题 List resources = this.selectList(wrapper); resource.setChildren(resources); if (resources != null && resources.size() > 0) { resources.forEach(this::findAllChild); } }

方式二:

如果无法使用基础entity,需要用到自定义的bean,可以通过xml自定义

SELECT * FROM sys_dept WHERE parent_id = #{deptId} SELECT * FROM sys_dept WHERE parent_id = 0

parent_id = 0 代表顶级节点。然后通过 collection 节点继续调用 getNextNodeTree 方法进行循环调用



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3