当前位置:网站首页>递归查询单表-单表树结构-(自用)
递归查询单表-单表树结构-(自用)
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;
}
边栏推荐
猜你喜欢
随机推荐
2022牛客多校联赛第四场 题解
10、Redis实现点赞(Set)和获取总点赞数
Huawei od dice js
SQL injection Less47 (error injection) and Less49 (time blind injection)
【Android】Room —— SQLite的替代品
SQALE 是什么
QML的使用
AI software development process in medical imaging field
Difference between CMOS and TTL?
CentOS7下mysql5.7.37的卸载【完美方案】
关于 mysql8.0数据库中主键位id,使用replace插入id为0时,实际id插入后自增导致数据重复插入 的解决方法
Modbus on AT32 MCUs
Pythagorean tuple od js
【编译原理】词法分析程序设计原理与实现
10. Redis implements likes (Set) and obtains the total number of likes
The Sad History of Image Processing Technology
C#远程调试
Mycat's master-slave relationship, vertical sub-database, horizontal sub-table, and detailed configuration of mycat fragmented table query (mysql5.7 series)
局域网电脑硬件信息收集工具
【Bank Series Phase 1】People's Bank of China