前言
在做項目中我們會遇到樹形結構數據,如果我們想要查詢某個幾點下面所有子節點(多級)數據,此時我們又不知道下面有多少級節點以及節點ID,那么我們就需要使用遞歸去查詢了,當然在數據庫中寫函數也是可以實現的,下面我們使用Java來實現遞歸查詢樹形結構數據。
Java代碼實現:
/** * 遞歸查詢 * @param ids * @return */
public List<FarmDepartment> queryAllDepartmentId(List<Long> ids){
//根據父ID查詢部門
List<FarmDepartment> departments = farmDepartmentMapper.findDepartmentByParentIds(ids);
if (CollectionUtils.isNotEmpty(departments)) {
//拿到當前所有部門ID
List<Long> parentIds = departments.stream().map(item -> item.getId()).collect(Collectors.toList());
//拼接子部門查詢結果
departments.addAll(queryAllDepartmentId(parentIds));
return departments;
} else {
//如果沒有下級部門那么我們就返回空集合,結束遞歸。
return Lists.newArrayList();
}
}