删除的标准模版

通用的思路:

我们肯定首先要判断一下这个状态是否为启用,如果是启动就放弃删除还要检查是否与其他表有关联导致不能删除

然后我们从前端接到的是一个id或者ids那么就不可避免的要根据id查得到状态等信息

Controller层也是直接直接接ids,传ids给service层

Service层就需要先用一个for循环
查询方法得到ids中对应的内容的状态是否是启用

或者检查是否与其他表有关联导致不能删除

检查完之后我们可以调用多个mapper层对多个表进行删除

示例代码

@ApiOperation("删除套餐")
@DeleteMapping
public Result deleteById(@RequestParam List<Long> ids) {
    setmealService.deleteByIds(ids);
    return Result.success();
}

 

@Override
public void deleteByIds(List<Long> ids) {
    //这里要做两件事情,
    //1.如果有套餐正在起售,则抛出业务异常
    //2.如果内含菜品,要在setmeal_dish表中删除包含此ids的关联记录
    for(Long id:ids)
    {
        if
        (Objects.equals(setmealMapper.getById(id).getStatus(), StatusConstant.ENABLE))
        {
            throw new BaseException("套餐正在起售中,不能删除");
        }

    }

    setmealMapper.deleteByIds(ids);
    setmealDishMapper.deleteBySetmealIds(ids);
}

@Delete("<script>" +
        "DELETE FROM setmeal_dish " +
        "WHERE setmeal_id IN " +
        "<foreach item='id' collection='ids' open='(' separator=',' close=')'>" +
        "#{id}" +
        "</foreach>" +
        "</script>")
void deleteBySetmealIds(List<Long> ids);

@Delete("<script>" +
        "DELETE FROM setmeal " +
        "WHERE id IN " +
        "<foreach item='id' collection='ids' open='(' separator=',' close=')'>" +
        "#{id}" +
        "</foreach>" +
        "</script>")
void deleteByIds(List<Long> ids);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值