MyBatis递归查询层级关系的树

server/2025/1/17 4:57:57/

之前做递归的时候写了那么多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/server/159001.html

相关文章

Windows Subsystem for Linux (WSL) 中安装 Redis

在 Windows Subsystem for Linux (WSL) 中安装 Redis 是一个常见的开发环境设置过程。以下是详细步骤&#xff0c;适用于 Ubuntu 或其他基于 Debian 的 Linux 发行版。 ✅ 步骤 1&#xff1a;打开 WSL 终端 首先&#xff0c;确保你已经在 Windows 上启用了 WSL&#xff0c;并安…

centos7.6 安装nacos 2.0.4与恢复nacos的mysql

1 安装目录 useradd adminmkdir -p /home/admin/nacos2 下载 wget https://github.com/alibaba/nacos/releases/download/2.0.4/nacos-server-2.0.4.zip?spm5238cd80.1f77ca18.0.0.4d31e37ewdt6EW&filenacos-server-2.0.4.zip cp nacos-server-2.0.4.zip /home/admin/ un…

C语言:-三子棋游戏代码:分支-循环-数组-函数集合

思路分析&#xff1a; 1、写菜单 2、菜单之后进入游戏的操作 3、写函数 实现游戏 3.1、初始化棋盘函数&#xff0c;使数组元素都为空格 3.2、打印棋盘 棋盘的大概样子 3.3、玩家出棋 3.3.1、限制玩家要下的坐标位置 3.3.2、判断玩家要下的位置是否由棋子 3.4、电脑出棋 3.4.1、…

3d 可视化库 vister部署笔记

目录 vister 开源地址: python版本: 在python3.10以上版本安装 viser, 测试ok的案例: 立方体mesh选中 SMPL-X可视化 ok 推理代码: vister 开源地址: GitHub - nerfstudio-project/viser: Web-based 3D visualization + Python python版本: 在python3.10以上版本…

备战蓝桥杯:树的存储与遍历(dfs和bfs)

树的概念 树的逻辑结构是树形结构&#xff0c;和我们之前的线性结构又不太一样了&#xff0c;是一种一对多的关系 树的结点分为根节点&#xff0c;叶子结点&#xff08;没有分支的结点&#xff09; 以及分支结点 从上往下看&#xff0c;每个结点都有0个或多个后继 从下往上…

Lesson 109 A good idea

Lesson 109 A good idea 词汇 idea n. 主意&#xff0c;想法 复数&#xff1a;ideas 用法&#xff1a;口语&#xff1a;Good idea! 好主意&#xff01;       Big idea! 高见&#xff01;好主意&#xff01;       Great idea! 好主意       Bad idea! 坏主…

leetcode79.单词搜索

给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 单词必须按照字母顺序&#xff0c;通过相邻的单元格内的字母构成&#xff0c;其中“相邻”单元格是那些水平相邻或垂直相…

mysql 双主双从 + proxysql 代理

环境 主机ipmaster1192.168.233.101master2192.168.233.102slave1192.168.233.103slave2192.168.233.104client192.168.233.105 需求 master1和master2互为主从&#xff0c;slave1是master1的从&#xff0c;slave2是master2的从。 master主机通过proxysql代理实现负载均衡的…