苍穹外卖day13
2026/7/12 4:57:16 网站建设 项目流程

自己写 菜品批量删除

controller

@DeleteMapping @ApiOperation("菜品删除") public Result delete(String ids){ log.info("菜品删除{}", ids); dishService.delete(ids); return Result.success(); }

问题:

@RequestParam:从URL 参数中取值(例如?ids=1,2,3

加上这个 spring才能知道把前端传来的请求参数放进ids这个变量里

ids只能单个删除 要传入多个参数 需要使用列表泛型

List<Long> ids 传入一个参数 里面包含多个需要删除的东西 spring 会自动分开

2改

调用方法只用变量名 不要类型

日志也是

---------------------------------------------------------------------------------------------------------------------------------

开始srvice层

接口:

void delete(List<Long> ids); }

具体实现:

public void delete(List<Long> ids) { for(Long id : ids){ } }

能力有限 只能写这么些了

提示:

想一想。

你只有一个id。

id = 1

你知道这个菜品的信息吗?

不知道。

所以是不是应该

根据id查询菜品。

于是你需要Mapper有一个方法。

例如

Dish getById(Long id);

那么Service里面就是

Dish dish = dishMapper.getById(id);

自己总结一下:
此时只有一个id 当然需要了解这个id下的菜品状态

所以需要调用mapper层来完成

涉及多次数据库操作的业务,通常都会加上@Transactional 事务

小错误纠正 变量引用(指向)了一个对象

接口声明了一个方法,但没有具体实现

DishMapper管的是 Dish表

现在查的是:

这个菜品有没有出现在套餐里面?

这其实查的是

SetmealDish表

所以 新创建俩文件 注入

不要忘记@Mapper

然后 补充一个知识点

现在用:

@Autowired private SetmealDishMapper setmealDishMapper;

能工作。

但是现在Spring Boot更推荐:

private final SetmealDishMapper setmealDishMapper; public DishServiceImpl(SetmealDishMapper setmealDishMapper){ this.setmealDishMapper = setmealDishMapper; }

构造器注入

然后 接着删除

现在根据 count的数量进行删除决定

如果count>=1 不能删除

要抛异常

==0可以删除

关于 java异常机制的补充

抛异常和return一个报错有什么区别?

Service接口原本是什么?

void delete(List<Long> ids); 这个方法不返回任何东西

但是你现在:

return Result.error();

你返回了一个Result。

直接类型冲突。

那你改成:

public Result delete(List<Long> ids)

可以吗?

技术上可以。

但是架构上不好。

为什么?

Controller应该负责返回Result

它负责:

HTTP响应应该是什么格式。

但是Service负责什么?

Service负责:

业务能不能执行。

它不应该关心:

HTTP状态码

JSON格式

Result对象

那Service怎么告诉Controller失败?

这就是异常。

你可能之前以为:

throw是不是指定扔给某个地方?

不是。

throw的意思只是:

"当前方法无法处理这个问题,把异常交给调用我的人。"

至于最后谁处理:

取决于调用链。

这里的调用者是contorller所以当然也就抛给了contorller

比如:

@DeleteMapping public Result delete(){ dishService.delete(ids); return Result.success(); }

没有:

try{ }catch(Exception e){ }

怎么办?

Spring接管。

Spring MVC有一个机制:

全局异常处理器。

剩下的mapper和sql就先不研究了

---------------------------------------------------------------------------------------------------------------------------------

现在开始修改菜品

踩到的坑:

查询不用事务

多表修改需要

查什么表 返回什么数据类型

list表示多条记录 而不是多个字段

通常用在分页查询

了解。。。。 联表查询!

一对一的关系 可以使用 可以减少查找数据库的次数喵~

Mapper 从来都不是"返回数据库表",而是"返回 SQL 映射出来的 Java 对象"。

一个重点 怎么把 flavors补充到dishvo 里面去

好了接下来的 我懒得写了

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询