MyBatis递归查询层级关系的树

之前做递归的时候写了那么多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">
        <collection
                property="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, isParent
    from t_department
    where parentId = #{parentId}
    </select>

结果展示:

相关推荐
JH30736 小时前
SpringBoot 优雅处理金额格式化:拦截器+自定义注解方案
java·spring boot·spring
Coder_Boy_7 小时前
技术让开发更轻松的底层矛盾
java·大数据·数据库·人工智能·深度学习
invicinble7 小时前
对tomcat的提供的功能与底层拓扑结构与实现机制的理解
java·tomcat
较真的菜鸟7 小时前
使用ASM和agent监控属性变化
java
黎雁·泠崖8 小时前
【魔法森林冒险】5/14 Allen类(三):任务进度与状态管理
java·开发语言
qq_12498707539 小时前
基于SSM的动物保护系统的设计与实现(源码+论文+部署+安装)
java·数据库·spring boot·毕业设计·ssm·计算机毕业设计
Coder_Boy_9 小时前
基于SpringAI的在线考试系统-考试系统开发流程案例
java·数据库·人工智能·spring boot·后端
Mr_sun.9 小时前
Day06——权限认证-项目集成
java
瑶山9 小时前
Spring Cloud微服务搭建四、集成RocketMQ消息队列
java·spring cloud·微服务·rocketmq·dashboard
abluckyboy9 小时前
Java 实现求 n 的 n^n 次方的最后一位数字
java·python·算法