《苍穹外卖》项目学习记录-Day3修改菜品

进行需求分析这里涉及几个接口,修改菜品之前需要把这个菜品信息来查询一下用于页面回显,这个查询操作对应一个接口。菜品分类其实是一个下拉框,这里面需要展示所有的菜品相关分类,这也是需要查询的,所以查询分类也是一个接口。涉及图片的重新上传,有可能需要上传一张新的图片,涉及到图片的重新上传,这也是一个接口。 最后,当我们点击保存按钮的时候实际把数据更新到数据库里面,真正的修改操作对应的又是一个接口。分析完这一共涉及4个接口,其中两个接口我们之前已经实现。

查询菜品的同时需要把关联的口味一起查上来,口味可能有多个,所以这个地方是一个数组。

这里我们要查询两张表,一张是菜品表(dish),一张是口味表(dish_flavor),给它封装到DishVO里面去。

1.先查菜品表获取到基础的属性,菜品表里面字段的值。

2.根据dish_id也就是菜品id,来查询关联的口味(dish_id是逻辑外键)。

3.最终把这两部分数据封装到一起,封装到DishVO里面。

修改菜品表比较简单直接发一个update语句就可以了,关联的口味表就有几种情况, 我们有可能把口味删掉加一些新的口味,有可能没改,有可能是追加的,也有可能是删除了。所有这里我们用了一种比较简单的处理方式,把当前这个菜品原先关联的口味数据全都统一删掉,然后再按照当前传过来的这个口味数据,重新再来插入一遍数据。也就是先删除原先的口味数据,再插入新的口味数据,最终是一个修改的效果。

这个DishDTO包含了口味数据,而我们当前只修改菜品表基本信息,所以我们这里传一个菜品对象更加合理。

这个修改菜品表基本信息我们用了动态SQL,也就是当传过来的菜品表里面的属性不为空时再去对它进行修改。修改的时候我们还需要设置修改人id和修改的时候,前面我们完成了公共字段自动填充,这时候加注解指定操作类型就可以了。

插入口味数据前我们要先判断传过来的口味数据有没有值,插入口味数据之前我们也要设置一下dish_id,因为这个口味数据可能是新增出来的,这时候dish_id还没有值,最后进行口味数据批量插入。

1.修改菜品表的基本信息

2.删除原有的口味数据

3.重新批量插入口味数据

注意:我们前面做了公共字段自动填充,是对这个对象里面的公共字段属性进行赋值,但是这并没有在数据库里面进行修改,所以在这里也需要添加这两个字段从而实现对数据库里面公共字段的修改。

相关推荐
蝴蝶不愿意21 分钟前
《苍穹外卖》项目学习记录-Day7缓存菜品
学习
dg10114 小时前
go-zero学习笔记(二)
笔记·学习·golang
zyhhsss6 小时前
AI(计算机视觉)自学路线
人工智能·笔记·学习·计算机网络·机器学习·计算机视觉
汤姆和佩琦6 小时前
2025-1-28-sklearn学习(47) & (48) 万家灯火亮年至,一声烟花开新来。
人工智能·python·学习·机器学习·sklearn
JovaZou11 小时前
[Python学习日记-80] 用 socket 实现文件传输功能(上传下载)
开发语言·网络·python·websocket·学习
Ronin-Lotus14 小时前
上位机知识篇---Git&GitHub
git·学习·github
东京老树根17 小时前
Excel 技巧22 - Ctrl+D 向下复制(★★),复制同间距图形
笔记·学习·excel
Ronin-Lotus18 小时前
程序代码篇---Python随机数
前端·python·学习·随机数
前端达人18 小时前
「AI学习笔记」深度学习的起源与发展:从神经网络到大数据(二)
人工智能·笔记·深度学习·神经网络·学习