以children这种方式的实体类来遍历子父级的树形结构。
//问题分类下拉表
@Override
public List<DA> selectDA(Long deptId,Long userId) {
//根据deptId获取当前parentId --- 第一步就是:获取根节点。
DA current = sysDropDownListMapper.selectDA(deptId);
//以下是可以拿到子部门内容
DA root;
//如果parentId为0,说明是根目录了。不是0就查找它的上级作为目录。
if (current.getParentId()!=0){
root = sysDropDownListMapper.selectDA(current.getParentId());
}else {
root = current;
}
//因为不需要返回parentId,所以返回同级就可以了。
DA item = getItem(root);
List<DA> list = item.getChildren();
return list;
}
/**
* 采用递归方式来获取树
*/
private DA getItem(DA parentItem){
//查询所有parentId为该数据的data --- 第二步:就是循环遍历parentId为该数据的 data。
List<DA> items = sysDropDownListMapper.selectDAByParentId(parentItem.getDeptId());
if (items!=null){
parentItem.setChildren(items);
for (DA item : items) {
getItem(item);
}
}
return parentItem;
}
对应实体类:
- 通过children这种方式来给前端显示子父级关系。
package com.ruoyi.system.domain;
import java.util.List;
public class DA {
Long deptId;
String deptName;
Long parentId;
List<DA> children;
public Long getParentId() {
return parentId;
}
public void setParentId(Long parentId) {
this.parentId = parentId;
}
public Long getDeptId() {
return deptId;
}
public void setDeptId(Long deptId) {
this.deptId = deptId;
}
public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
}
public List<DA> getChildren() {
return children;
}
public void setChildren(List<DA> children) {
this.children = children;
}
}