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

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

相关推荐
sulikey22 分钟前
个人Linux操作系统学习笔记11 - 环境变量
linux·笔记·学习
治愈系贝壳1 小时前
ARM --- day 6 时钟
linux·arm开发·学习
minglie12 小时前
zynq高频小数据量PS闭环的三个实验-第0课:目的和目标
学习
劈星斩月3 小时前
监督学习算法 之 决策树
学习·算法·决策树
AOwhisky3 小时前
Python 学习笔记(第五期)——组合数据类型:列表、元组、集合与字典精讲——核心知识点自测与详解
开发语言·笔记·python·学习·云计算
woshihuanglaoshi3 小时前
数据迁移与版本管理 - Flutter在鸿蒙平台实现数据库升级策略
数据库·学习·flutter·华为·harmonyos·鸿蒙·鸿蒙系统
世人万千丶13 小时前
参数管理_Flutter在鸿蒙平台路由参数最佳实践
学习·flutter·华为·harmonyos·鸿蒙
遇乐的果园16 小时前
前端学习笔记-vue加载渲染优化
前端·笔记·学习
遇乐的果园17 小时前
前端学习笔记-vue状态管理优化
前端·笔记·学习
从零开始的代码生活_18 小时前
C++ 继承详解:访问控制、对象模型、菱形继承与设计取舍
开发语言·c++·后端·学习·算法