这篇文章把几个餐饮项目接口笔记合并起来,说明真实后端开发里的 CRUD 往往绕不开分页、关联数据和业务状态判断。
本文整理自早期学习笔记,发布时间按学习阶段归档。
正文
难点不在于依据 id 删除
- 批量删除
- 删除后,关联的口味数据也需要删除
- 套餐里面的菜品不能删除
- 起售不能删除
@Transactional
@Override
public void deleteBatch(List<Long> ids) {
//先查询菜品,遍历出id
for (Long id : ids) {
Dish dish = dishMapper.getByDishId(id);
//判断当前菜品是否起售
if (dish.getStatus() == StatusConstant.ENABLE) {
throw new DeletionNotAllowedException(MessageConstant.DISH_ON_SALE);
}
}
//再判断当前分类是否关联了套餐,如果关联了就抛出业务异常
List<Long> setmealIdsByDishIds = setmealDishMapper.getSetmealIdsByDishIds(ids);
if (setmealIdsByDishIds != null && setmealIdsByDishIds.size() > 0) {
//如果存在菜品被套餐关联了,就抛出业务异常
throw new DeletionNotAllowedException(MessageConstant.CATEGORY_BE_RELATED_BY_SETMEAL);
}
如何去解析 1.2.3
为什么要去切换
—
S:
先做非空判断
Page pagesize
xml:
什么是 query
起别名
区别
简单赋值+
<!– 批量插入口味数据–>
<!– * 批量插入菜品数据–>
<insert id="pageQuery" >
insert into dish
(name,category_id,price,status,create_time,update_time,create_user,update_user,image,description)
values
(#{name},#{categoryId},#{price},#{status},#{createTime},#{updateTime},#{createUser},#{updateUser},#{image},#{description})
</insert>
左外连接
<!– * 批量插入菜品数据–>
<insert id="insertBatch" useGeneratedKeys="true" keyProperty="id">
insert into dish_flavor(dish_id,name,value)
values(#{dish_id},#{name},#{value})
<foreach collection="flavors" item="df">
(#{df.dishId},#{df.name},#{df.value})
</foreach>
</insert>
—
~~查询回显菜品和口味~~
查询菜品对应的分类
图片重新上传
修改菜品
图片占位:Pasted image 20251013155512.png
图片占位:Pasted image 20251013155526.png
Dish dish = new Dish();
方法是小写
dishMapper. update ();
