删除需求:
- 1、假设有多级分类
- 2、当删除一级分类的时候,同时删除一级分类下面的所有分类
Controller代码
@DeleteMapping("{oneId}")
public R deleteOneId(@PathVariable("oneId") String oneId){
boolean flag = eduSubjectService.deleByOneId(oneId);
if (flag){
return R.ok();
}
return R.error();
}
实现类
@Override
public boolean deleByOneId(String oneId) {
ArrayList<String> ids = new ArrayList<>();
//先把要删除的一级分类id放入到集合中
ids.add(oneId);
//递归的将一级分类下的id也加入到集合中
this.getIds(ids,oneId);
//批量删除集合中的id
int i = baseMapper.deleteBatchIds(ids);
return i>0;
}
//递归方法
private void getIds(ArrayList<String> ids, String oneId) {
//查询二级分类的对象
QueryWrapper<EduSubject> Wrapper = new QueryWrapper<>();
Wrapper.eq("parent_id",oneId);
List<EduSubject> twoSubjects = baseMapper.selectList(Wrapper);
//遍历二级分类的对象,把二级分类的id加入到要删除的集合中
for (EduSubject twoSubject : twoSubjects) {
String id = twoSubject.getId();
ids.add(id);
//把二级分类的每一个ID,查询它下面的子节点
this.getIds(ids,id);
}
}
原文链接:https://blog.csdn.net/weixin_42985774/article/details/100562267