java 根据部门id跟parentid查询整个部门树
时间: 2024-01-04 18:04:30 浏览: 212
Java递归遍历树形结构
可以使用递归查询实现整个部门树的查询。假设部门表结构如下:
| 字段名 | 类型 | 说明 |
| --- | --- | --- |
| id | int | 部门id |
| name | varchar | 部门名称 |
| parent_id | int | 父部门id |
可以使用以下的Java代码实现:
```java
public class Department {
private int id;
private String name;
private int parentId;
private List<Department> children;
// 省略getter和setter方法
}
public class DepartmentTree {
private List<Department> departmentList;
// 根据部门id和parent_id查询整个部门树
public List<Department> queryDepartmentTree(int id, int parentId) {
departmentList = new ArrayList<>();
// 查询根部门
Department root = queryDepartmentById(id);
if (root != null) {
departmentList.add(root);
// 查询子部门
queryChildrenDepartment(parentId, root);
}
return departmentList;
}
// 根据部门id查询部门信息
private Department queryDepartmentById(int id) {
// 省略查询部门信息的代码
}
// 查询子部门
private void queryChildrenDepartment(int parentId, Department parentDepartment) {
List<Department> children = queryDepartmentByParentId(parentId);
if (children != null && children.size() > 0) {
for (Department child : children) {
// 添加子部门到父部门的children中
parentDepartment.getChildren().add(child);
// 递归查询子部门的子部门
queryChildrenDepartment(child.getId(), child);
}
}
}
// 根据父部门id查询子部门信息
private List<Department> queryDepartmentByParentId(int parentId) {
// 省略查询子部门信息的代码
}
}
```
以上代码中,`queryDepartmentTree`方法用来查询整个部门树,输入参数为根部门id和父部门id,返回值为整个部门树的列表。
首先查询根部门,然后递归查询子部门,将子部门添加到父部门的`children`属性中。递归查询实现了整个部门树的查询。
阅读全文