《苍穹外卖》项目学习记录-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.重新批量插入口味数据

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

相关推荐
蒸蒸yyyyzwd17 分钟前
学习笔记 八股手撕
笔记·学习
留岁3 小时前
大模型推理部署 · 学习文档
学习
小李不想当小白3 小时前
BKP备份寄存器与RTC实时时钟(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
陈飞EXCEL4 小时前
北京杰飞 IT 旗下妙码生花少儿Python编程上线两大学习系统
开发语言·python·学习
SLAM必须dunk5 小时前
Agent入门学习一
学习
承渊政道6 小时前
Linux网络学习【从NAT与代理服务理解网络转发、探索内网穿透原理、再到认识DNS与ICMP、最后动手部署并测试内网穿透】
linux·网络·学习·内网穿透·dns·nat
栉甜7 小时前
Vue2学习内容(上)
前端·javascript·vue.js·学习
shangjian0077 小时前
K8S学习-基础组件
学习·容器·kubernetes
lifallen7 小时前
ub-mode skill:软件工程原则
人工智能·学习·ai·软件工程·ai编程
凉、介9 小时前
深入理解 ARMv7-A | Generic Timer
笔记·学习·嵌入式·arm