当前位置:网站首页>递归查询单表-单表树结构-(自用)
递归查询单表-单表树结构-(自用)
2022-07-31 03:00:00 【杰拉德·皮克·谢】
单表递归应用场景,树结构无限下沉(如下图)
表结构 parent_id(父亲id)
实体类
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "t_dept")
public class OrgDept implements Serializable {
/** * 组织架构 */
@TableId(value = "org_id", type = IdType.INPUT)
private Long orgId;
/** * 组织code */
@TableField(value = "org_code")
private String orgCode;
/** * 组织名称 */
@TableField(value = "org_name")
private String orgName;
/** * 父节点 */
@TableField(value = "parent_id")
private Long parentId;
/** * 组织描述 */
@TableField(value = "org_address")
private String orgAddress;
/** * 创建时间 */
@TableField(value = "create_time")
private Date createTime;
/** * 创建人 */
@TableField(value = "create_by")
private String createBy;
/** * 电话号码 */
@TableField(value = "phone_number")
private String phoneNumber;
/** * 排序 */
@TableField(value = "order_number")
private Integer orderNumber;
@TableField(exist = false)
private String parentName;
@TableField(exist = false)
List<OrgDept> children;
/** * 部门id集合 */
@TableField(exist = false)
List<Integer> depaIds;
private static final long serialVersionUID = 1L;
}
impl 递归开始
listRoleOrgDept
@Override
@Transactional(rollbackFor = Exception.class)
public List<OrgDept> listRoleOrgDept(Long deptId) {
//
List<Long> depaIds = new ArrayList<>();
// x_1 部门全部列表
List<OrgDept> orgDepts = new LambdaQueryChainWrapper<>(orgDeptMapper)
.list();
//定义返回对象子父嵌套
List<OrgDept> parentMenu;
// 点击页面时会捕捉当前节点拿到节点id 如果没有默认全部
if (deptId == null) {
// 获取全部列表
parentMenu = orgDepts.stream().filter(e -> e.getParentId().equals(0L)).collect(Collectors.toList());
//
for (OrgDept sysMenu : parentMenu) {
depaIds.add(sysMenu.getOrgId());
setChild(sysMenu, orgDepts, depaIds);
}
} else {
parentMenu = pIdLive(deptId, orgDepts, depaIds);
}
return parentMenu;
}
边栏推荐
- Installation, start and stop of redis7 under Linux
- JS 函数 this上下文 运行时点语法 圆括号 数组 IIFE 定时器 延时器 self.备份上下文 call apply
- LeetCode 1161 The largest element in the layer and the LeetCode road of [BFS binary tree] HERODING
- 局域网电脑硬件信息收集工具
- The Sad History of Image Processing Technology
- Chapter 9 SVM实践
- CMOS和TTL的区别?
- The use of font compression artifact font-spider
- YOLOV5学习笔记(三)——网络模块详解
- LeetCode 每日一题 2022/7/25-2022/7/31
猜你喜欢
随机推荐
JetPack组件Databinding
Why is String immutable?
JetPack component Databinding
The Sad History of Image Processing Technology
共模电感的仿真应用来了,满满的干货送给大家
刚出道“一战成名”,安全、舒适一个不落
图解lower_bound&upper_bound
C#远程调试
4. Sensitive word filtering (prefix tree)
QML的使用
Discourse 自定义头部链接(Custom Header Links)
开题报告之论文框架
StringJoiner in detail
[C language foundation] Solve C language error: expected ';', ',' or ')' before '&' token
11. Redis implements follow, unfollow, and follow and follower lists
Mycat's master-slave relationship, vertical sub-database, horizontal sub-table, and detailed configuration of mycat fragmented table query (mysql5.7 series)
软件积累 -- 截图软件ScreenToGif
8. Unified exception handling (controller notifies @ControllerAdvice global configuration class, @ExceptionHandler handles exceptions uniformly)
Classic linked list OJ strong training problem - fast and slow double pointer efficient solution
Is interprofessional examination difficult?Low success rate of "going ashore"?Please accept this practical guide!