【苍穹外卖】为什么这里要加size()>0呢?setmealIds != null && setmealIds.size() > 0

文章讲述了如何在Java代码中实现对菜品的删除操作,确保只有在菜品不处于起售状态且未关联任何套餐时才允许删除,涉及到了数据库查询和事务管理。
摘要由CSDN通过智能技术生成

我不加size()>0只写setmealIds != null 抛异常显示当前菜品关联了套餐

    @Transactional
    @Override
    public void delete(List<Long> ids) {
        //1. 判断菜品的状态,起售中的菜品不能删除,提示错误信息
        //只需要统计总记录数
        Long count = dishMapper.countEnableDishByIds(ids);
        if(count > 0) { //这批菜品中包含了起售菜品
            throw new DeletionNotAllowedException(MessageConstant.DISH_ON_SALE);
        }

        //2. 判断菜品是否关联套餐,如果关联套餐,不能删除,提示错误信息
        List<Long> setmealIds = setmealDishMapper.getSetmealIdsByDishIds(ids);
        if(setmealIds != null && setmealIds.size() > 0) {
            throw new DeletionNotAllowedException(MessageConstant.DISH_BE_RELATED_BY_SETMEAL);
        }

        //3. 删除菜品,并删除菜品口味
        dishMapper.deleteByIds(ids);
        dishFlavorMapper.deleteByDishIds(ids);
    }
    <select id="getSetmealIdsByDishIds" resultType="java.lang.Long">
        select setmeal_id from setmeal_dish where dish_id in
        <foreach collection="ids" item="id" separator="," open="(" close=")">
            #{id}
        </foreach>
    </select>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值