表结构
CREATE TABLE `dept` (
`id` int(32) NOT NULL AUTO_INCREMENT,
`dept_name` varchar(255) DEFAULT NULL,
`pid` int(32) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;
数据
INSERT INTO `dev_help`.`dept`(`id`, `dept_name`, `pid`) VALUES (1, '部门1', 0);
INSERT INTO `dev_help`.`dept`(`id`, `dept_name`, `pid`) VALUES (2, '部门2', 0);
INSERT INTO `dev_help`.`dept`(`id`, `dept_name`, `pid`) VALUES (3, '部门3', 0);
INSERT INTO `dev_help`.`dept`(`id`, `dept_name`, `pid`) VALUES (4, '部门4', 1);
INSERT INTO `dev_help`.`dept`(`id`, `dept_name`, `pid`) VALUES (5, '部门5', 1);
INSERT INTO `dev_help`.`dept`(`id`, `dept_name`, `pid`) VALUES (6, '部门6', 4);
java 实体
@Data
public class Dept implements Serializable {
private Integer id;
private String deptName;
private Integer pid;
private List<Dept> list;
}
递归查询所以部门
public List<Dept > getTree(){
List<Dept > dept= deptMapper.queryDeptByPid("0");
ArrayList<Dept> tree = new ArrayList<>();
dept.forEach(d-> {
List<Dept > treeList = deptMapper.deptMapper(d.getId());
getChildren(treeList );
d.setList(treeList );
tree.add(catalogueTreeDTO);
});
return tree;
}
public void getChildren(List<Dept> list){
List<Dept > retList = new ArrayList<>();
for (Dept dept: list) {
retList = deptMapper.queryDeptByPid(dept.getId());
if(retList.size() > 0){
dept.setList(retList);
getChildren(retList);
}
}
}