当前位置:网站首页>Recursive query single table - single table tree structure - (self-use)
Recursive query single table - single table tree structure - (self-use)
2022-07-31 03:03:00 【Gerald Peake Shea】
Recursively query a single table
Single table recursive application scenario,The tree structure sinks infinitely(如下图)
表结构 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 Department full list
List<OrgDept> orgDepts = new LambdaQueryChainWrapper<>(orgDeptMapper)
.list();
//Defines the return object child parent nesting
List<OrgDept> parentMenu;
// When the page is clicked, the current node will be captured to get the nodeid If not default all
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;
}
边栏推荐
- QML的使用
- IDEA 注释报红解决
- 一份高质量的测试用例如何养成?
- CentOS7下mysql5.7.37的卸载【完美方案】
- C primer plus学习笔记 —— 8、结构体
- 6. Display comments and replies
- Office automation case: how to automatically generate period data?
- Multilingual settings of php website (IP address distinguishes domestic and foreign)
- Ambiguous method call.both
- MP使用时的几个常见报错
猜你喜欢
Mysql 45讲学习笔记(二十四)MYSQL主从一致
跨专业考研难度大?“上岸”成功率低?这份实用攻略请收下!
【异常】The field file exceeds its maximum permitted size of 1048576 bytes.
字体压缩神器font-spider的使用
Why is String immutable?
Graphical lower_bound & upper_bound
C# remote debugging
VS QT——ui不显示新添加成员(控件)||代码无提示
Crypto Firms Offer Offer To Theft Hackers: Keep A Little, Give The Rest
Installation of mysql5.7.37 under CentOS7 [perfect solution]
随机推荐
7、私信列表
SQL injection Less46 (injection after order by + rand() Boolean blind injection)
Discourse 自定义头部链接(Custom Header Links)
自动化办公案例:如何自动生成期数据?
[Android] Room - Alternative to SQLite
Moxa NPort 设备缺陷可能使关键基础设施遭受破坏性攻击
4. Sensitive word filtering (prefix tree)
知识蒸馏7:知识蒸馏代码详解
编译Hudi
Map.Entry理解和应用
【Cocos Creator 3.5】缓动系统停止所有动画
Modbus on AT32 MCU
12 磁盘相关命令
SQL injection Less54 (limited number of SQL injection + union injection)
Crypto Firms Offer Offer To Theft Hackers: Keep A Little, Give The Rest
JS function this context runtime syntax parentheses array IIFE timer delay self.backup context call apply
开题报告之论文框架
What is distributed and clustered?What is the difference?
【C语言】预处理操作
递归查询单表-单表树结构-(自用)