员工与部门组织,左树右列表,点击左侧树形结构节点,查询当前节点关联以及下级所有节点关联的所有信息列表
下列场景下-解决方案
重点看where后面最后一个查询条件
重点看where后面最后一个查询条件
重点看where后面最后一个查询条件
## 格外注意
## 此处{paramEntity.departmentId}为
## 在点击左侧菜单树时,由前端赋值给传给后端的请求参数
## **departmentId:department_table.id**左侧树由department_table表数据组装的tree数据结构
and concat(dc.parentPathId,',',dc.id) like concat('%',{paramEntity.departmentId},'%')
<select id="selectEmployeePage" resultMap="employeeResultMap">
SELECT
ri.*
FROM
employee_table ri
LEFT JOIN department_table dc ON ri.department_id = dc.id
WHERE
ri.is_deleted = 0
and dc.is_deleted = 0
<if test="paramEntity.employeeName!=null and paramEntity.employeeName!='' ">
and ri.employee_name like concat('%',#{paramEntity.employeeName},'%')
</if>
<if test="paramEntity.departmentId!= null and paramEntity.departmentId!= ''">
and concat(dc.parentPathId,',',dc.id) like concat('%',{paramEntity.departmentId},'%')
</if>
</select>
一:场景条件-多级部门下每个部门拥有各自的员工
部门表SQL
-- ----------------------------
-- Table structure for department_table 部门表
-- ----------------------------
DROP TABLE IF EXISTS `department_table`;
CREATE TABLE `department_table` (
`id` bigint(20) NOT NULL COMMENT '数据id(主键)',
`department_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '部门名称',
`pid` bigint(20) NOT NULL COMMENT '父id(一级分类的父id为0)',
`parentPathId` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '所有祖先id路径',
`level` int(2) NOT NULL COMMENT '层级(最多到10级)',
`create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
`create_dept` bigint(20) NULL DEFAULT NULL COMMENT '创建部门',
`create_time` timestamp(0) NULL DEFAULT NULL COMMENT '创建时间',
`update_user` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
`update_time` timestamp(0) NULL DEFAULT NULL COMMENT '更新时间',
`status` tinyint(4) NULL DEFAULT NULL COMMENT '业务状态',
`is_deleted` tinyint(4) NULL DEFAULT NULL COMMENT '是否已删除(0:未删除; 1:已删除)',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '部门表' ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
员工表SQL
employee
-- ----------------------------
-- Table structure for employee_table 员工表
-- ----------------------------
DROP TABLE IF EXISTS `employee_table`;
CREATE TABLE `employee_table` (
`id` bigint(20) NOT NULL COMMENT '主键',
`employee_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '雇员名称',
`department_id` bigint(20) NOT NULL COMMENT '部门id',
`create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
`create_dept` bigint(20) NULL DEFAULT NULL COMMENT '创建部门',
`create_time` timestamp(0) NULL DEFAULT NULL COMMENT '创建时间',
`update_user` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
`update_time` timestamp(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间',
`status` tinyint(4) NULL DEFAULT NULL COMMENT '业务状态',
`is_deleted` tinyint(4) NOT NULL DEFAULT 0 COMMENT '是否已删除(0:未删除; 1:已删除)',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '雇员表' ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;