主要在service层实现,关键的是listWithTree()和getChild()函数
1、service接口
public interface ReviewGuidelinesService extends IService<ReviewGuidelines> {
/**
* 实现查询审查指南表中的 所有数据
* @return ReviewGuidelines list集合
*/
List<ReviewGuidelines> queryAll();
/**
* 将查询审查指南表中到的所有数据,处理成树形数据
* @return 处理后的树形数据ReviewGuidelines list集合
*/
List<ReviewGuidelines> listWithTree();
}
2、service实现
@Service
public class ReviewGuidelinesServiceImpl extends ServiceImpl<ReviewGuidelinesMapper, ReviewGuidelines> implements ReviewGuidelinesService {
@Autowired
ReviewGuidelinesMapper reviewGuidelinesMapper;
/**
* 实现查询审查指南表中的所有数据
* @return ReviewGuidelines list集合
*/
@Override
public List<ReviewGuidelines> queryAll() {
return reviewGuidelinesMapper.selectList(null);
}
/**
* 将查询表中的所有数据处理成树形层级数据
* @return ReviewGuidelines list集合
*/
@Override
public List<ReviewGuidelines> listWithTree() {
//查询review_guidelines表所有数据
List<ReviewGuidelines> rgs = queryAll();
//获取为父节点的ReviewGuidelines,并且赋值其子节点
for (ReviewGuidelines rg : rgs){
if (rg.getIsParent())
rg.setReviewGuidelines(getChild(rg,rgs));
else
rg.setReviewGuidelines(null);
}
//只返回ParentId为0,代表其为审查指南
List<ReviewGuidelines> returnList = new ArrayList<>();
for (ReviewGuidelines rg : rgs)
if (rg.getParentId() == 0)
returnList.add(rg);
return returnList;
}
public List<ReviewGuidelines> getChild(ReviewGuidelines root, List<ReviewGuidelines> all) {
// 创建一个集合,存储父节点的子节点
List<ReviewGuidelines> childs = new ArrayList<>();
//将 集合中父id == 当前父节点id,即代表该rg是当前父节点的子节点之一
for (ReviewGuidelines rg : all){
if (rg.getParentId() == root.getId())
childs.add(rg);
}
return childs;
}
}