MyBatis |
您所在的位置:网站首页 › mybatisplus树形结构查询 › MyBatis |
方式一: 这里给出最关键的二段代码 查询入口函数 @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 = 0parent_id = 0 代表顶级节点。然后通过 collection 节点继续调用 getNextNodeTree 方法进行循环调用 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |