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

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

相关推荐
数智工坊4 小时前
机器人运动控制:采样、优化与学习三大流派深度对比与实战
android·学习·机器人
ZC跨境爬虫5 小时前
跟着 MDN 学JavaScript day_7:数学运算与逻辑判断实战测试
开发语言·前端·javascript·学习·ecmascript
MartinYeung57 小时前
[论文学习]隐私保护联邦特徵选择与差分隐私的的工程实践框架
学习
qeen877 小时前
【C++】类与对象之类的默认成员函数(二)
android·c语言·开发语言·c++·笔记·学习
Flandern11118 小时前
Pull Requests(PR)
学习·github·pr
nashane9 小时前
HarmonyOS 6学习:JsCrash“闪退”法医指南——从FaultLog堆栈还原崩溃现场的终极手册
学习·华为·harmonyos
for_ever_love__9 小时前
UI学习:UICollectionView瀑布流
学习·ui·ios·objective-c·cocoa
AOwhisky9 小时前
MySQL 学习笔记(第六期):MySQL 备份与恢复
运维·数据库·笔记·学习·mysql·云计算
_李小白9 小时前
【android opencv学习笔记】Day 32:直线检测之霍夫变换
android·opencv·学习
提子拌饭13311 小时前
Column 嵌套布局:多级 Column 实现复杂纵向结构——鸿蒙 HarmonyOS ArkTS 原生学习应用
学习·华为·harmonyos·鸿蒙·鸿蒙系统