使用递归将父栏目下的所有子栏目删除

一、问题

由于栏目的删除可能会涉及主外键的约束问题,删除该栏目时需要将该栏目对应下的所有子栏目删除掉

二、解决

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);
}

猜你喜欢

转载自blog.csdn.net/h18377528386/article/details/125676011