一、问题
由于栏目的删除可能会涉及主外键的约束问题,删除该栏目时需要将该栏目对应下的所有子栏目删除掉
二、解决
1.通过数据库设置级联删除
2.通过代码逻辑删除
//通过id删除栏目实现,如果该栏目存在子栏目,就先把子栏目全部删除完
public void deleteById(int id) {
// 根据栏目id调用CategoryComfirmById方法判断是否存在该栏目,如果存在就进行删除,没有就抛出异常
if(mapper.CategoryComfirmById(id)==1){
//获取当前栏目id对应下的所有子栏目的id,并使用集合数组存储
ArrayList sons = DeleteComfirm(id);
for (int i=0;i<sons.size();i++){
// 循环递归子栏目进行删除
deleteById((int)sons.get(i));
}
//删除当前栏目
mapper.deleteById(id);
}else {
throw new CustomerException(ResultStatus.DELETE_CATETRY_ERROR);
}
}
// 根据栏目id查询栏目对应下的所有子栏目
public ArrayList<Integer> DeleteComfirm(int category_id){
return mapper.DeleteComfirm(category_id);
}