后端 CRUD 不只是增删改查:分页、批量删除和业务校验
Java后端

后端 CRUD 不只是增删改查:分页、批量删除和业务校验

这篇文章把几个餐饮项目接口笔记合并起来,说明真实后端开发里的 CRUD 往往绕不开分页、关联数据和业务状态判断。

本文整理自早期学习笔记,发布时间按学习阶段归档。

正文

难点不在于依据 id 删除

  1. 批量删除
  2. 删除后,关联的口味数据也需要删除
  1. 套餐里面的菜品不能删除
  2. 起售不能删除

@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 ();

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注