删除需求:
* 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); } }