MyBatis递归查询层级关系的树

news/2025/1/21 2:29:11/

之前做递归的时候写了那么多java代码发现根本不需要,直接sql就能搞定,直接上代码。

数据:根据parentId查出id,然后把id赋值给parentId,在查处原本parentId下面有哪些级别的数据。
在这里插入图片描述

实体类:这里关键是id,和父级parentId有关联关系。另外加一个children,list元素是本实体类。

/*** 部门实体*/
public class Department implements Serializable {private Integer id;private String name;private Integer parentId;private String depPath;private Boolean enabled;private Boolean isParent;private List<Department> children;// 子部门
}

dao层:这里传的是父级parentId

    /*** mapper接口*/List<Department> getAllDepartments(Integer parentId);

xml:

    <!-- 通用查询映射结果 --><resultMap id="BaseResultMap" type="com.cdh.server.pojo.Department"><id column="id" property="id"/><result column="name" property="name"/><result column="parentId" property="parentId"/><result column="depPath" property="depPath"/><result column="enabled" property="enabled"/><result column="isParent" property="isParent"/></resultMap><!-- 相当于id=-1 查询的结果id,再用这个id调用自己方法查询 --><resultMap id="DepartmentMap" type="com.cdh.server.pojo.Department" extends="BaseResultMap"><collectionproperty="children"ofType="com.cdh.server.pojo.Department"select="com.cdh.server.mapper.DepartmentMapper.getAllDepartments"column="id"></collection></resultMap><!--查询所有部门--><select id="getAllDepartments" resultMap="DepartmentMap">select id, name, parentId, depPath, enabled, isParentfrom t_departmentwhere parentId = #{parentId}</select>

结果展示:
在这里插入图片描述


http://www.ppmy.cn/news/1564815.html

相关文章

Spring boot框架下的RocketMQ消息中间件

1. RocketMQ 基础概念 1.1 核心概念 以下是 RocketMQ 核心概念在 Spring Boot 的 Java 后端代码中的实际使用方式&#xff1a; Producer&#xff08;生产者&#xff09; 定义&#xff1a;Producer 是负责发送消息到 RocketMQ 的组件。它可以将消息发送到指定的 Topic。 实…

深入理解 Entity、VO、QO、DTO 的区别及其在 MVC 架构中的应用

文章背景 在现代软件开发中&#xff0c;我们经常会接触到各种数据结构的概念&#xff0c;比如 Entity、VO&#xff08;Value Object&#xff09;、QO&#xff08;Query Object&#xff09;、DTO&#xff08;Data Transfer Object&#xff09;等。这些概念尽管看似相似&#xff…

【VRChat · 改模】Unity工程导入人物模型;并添加着色器教程;

一、Unity工程导入人物模型 1.创建一个新的工程文件&#xff08;使用 VRChat 官方的开发工具 VCC&#xff09; 不添加着色器的时候&#xff0c;模型是粉色的 2.导入人物模型 在工程文件的 Assets 目录下&#xff0c;创建一个新的目录&#xff0c;可以起名为你的模型的名字 …

《Java核心技术II》获取Web数据URL和URI使用URLConnection获取信息

4.3 获取Web数据 4.3.1 URL和URI URL和URLConnection类封装了大量复杂的实现细节&#xff0c;这些细节涉及如何从站点获取信息。 从字符串构建URL对象&#xff0c;openStream方法产生输入流对象&#xff0c;用Scanner构建这个对象。 var url new URL(urlString); InputStream…

AI编程工具使用技巧——通义灵码

活动介绍通义灵码1. 理解通义灵码的基本概念示例代码生成 2. 使用明确的描述示例代码生成 3. 巧妙使用注释示例代码生成 4. 注意迭代与反馈原始代码反馈后生成优化代码 5. 结合生成的代码进行调试示例测试代码 其他功能定期优化生成的代码合作与分享结合其他工具 总结 活动介绍…

在PyCharm中使用Anaconda中的虚拟环境

1、在File菜单中找到Settings 2、Settings中搜索interpreter&#xff0c;找到Python Interpreter&#xff0c;再点击Add 3、选择第一个local interpreter 4、如图&#xff1a; 5、找到anaconda安装位置中的envs文件夹&#xff0c;在里面选择需要添加的python环境&#xff0c;如…

规避路由冲突

路由冲突是指在网络中存在两个或多个路由器在进行路由选择时出现矛盾&#xff0c;导致网络数据包无法正确传输&#xff0c;影响网络的正常运行。为了规避路由冲突&#xff0c;可以采取以下措施&#xff1a; 一、合理规划IP地址 分配唯一IP&#xff1a;确保每个设备在网络中都有…

Redis系列之底层数据结构整数集IntSet

Redis系列之底层数据结构整数集IntSet 什么是IntSet IntSet&#xff0c;整数集合&#xff0c;是Redis集合类型的一种底层数据结构&#xff0c;当一个集合只包含整数值元素&#xff0c;并且这个集合的元素数量不多时&#xff0c;redis就会选用intset作为底层实现。 IntSet的数…