当前位置: 首页 > news >正文

苍穹外卖--修改菜品

1.需求分析和设计

 产品原型:

接口设计:

根据id查询菜品

根据类型查询分类(以实现)

文件上传

修改菜品

2.代码开发

根据id查询菜品:

Controll层代码:

/*** 根据id查询菜品* @return*/@GetMapping("/{id}")@ApiOperation("根据id查询菜品")public Result<DishVO> getById(@PathVariable Long id){log.info("根据id查询菜品:{}",id);DishVO dishVO = dishService.getByIdWithFlavor(id);return Result.success(dishVO);}

Service层代码:

/*** 根据id查询菜品和对应的口味数据* @param id* @return*/DishVO getByIdWithFlavor(Long id);
/*** 根据id查询菜品和对应的口味数据* @param id* @return*/@Overridepublic DishVO getByIdWithFlavor(Long id) {//根据id查询菜品数据Dish dish = dishMapper.getById(id);//根据菜品id查询口味数据List<DishFlavor> dishFlavors = dishFlavorMapper.getByDishId(id);//将查询到的数据封装到VODishVO dishVO = new DishVO();BeanUtils.copyProperties(dish,dishVO);dishVO.setFlavors(dishFlavors);return dishVO;}

Mapper层代码:

/*** 根据菜品id查询对应的口味数据* @param dishId* @return*/@Select("SELECT * FROM dish_flavor WHERE dish_id = #{dishId}")List<DishFlavor> getByDishId(Long dishId);

修改菜品代码:

Controll层代码:

/*** 修改菜品* @param dishDTO* @return*/@PutMapping@ApiOperation("修改菜品")public Result update(@RequestBody DishDTO dishDTO){log.info("修改菜品:{}",dishDTO);dishService.updateWithFlavor(dishDTO);return Result.success();}

Service层代码:

/*** 根据id修改菜品基本信息和对应的口味信息* @param dishDTO*/void updateWithFlavor(DishDTO dishDTO);
/*** 根据id修改菜品基本信息和对应的口味信息* @param dishDTO*/@Overridepublic void updateWithFlavor(DishDTO dishDTO) {Dish dish = new Dish();BeanUtils.copyProperties(dishDTO,dish);//修改菜品表基本信息dishMapper.update(dish);//删除原有的口味数据dishFlavorMapper.deleteByDishId(dishDTO.getId());//重新插入口味数据List<DishFlavor> flavors = dishDTO.getFlavors();if(flavors != null && flavors.size() > 0){//是否有口味数据flavors.forEach(dishFlavor -> {dishFlavor.setDishId(dishDTO.getId());//遍历获取菜品对应的口味表id,好进行插入});//向口味表插入n条数据dishFlavorMapper.insertBatch(flavors);}}

Mapper层代码:

/*** 根据id动态修改菜品数据* @param dish*/@AutoFill(value = OperationType.UPDATE)void update(Dish dish);

XML代码:

<!--根据id修改菜品信息--><update id="update">UPDATE dish<set><if test="name != null">name = #{name},</if><if test="categoryId != null">category_id = #{categoryId},</if><if test="price != null">price = #{price},</if><if test="image != null">image = #{image},</if><if test="description != null">description = #{description},</if><if test="status != null">status = #{status},</if><if test="updateTime != null">update_time = #{updateTime},</if><if test="updateUser != null">update_user = #{updateUser},</if></set>WHERE id = #{id}</update>
http://www.dtcms.com/a/198978.html

相关文章:

  • 【超详细】面试中问到事件循环(Event Loop)机制?
  • 如何本地部署Qwen3系列的大小模型235B/32B并进行推理服务及并发测试?
  • C#自定义扩展方法 及 EventHandler<TEventArgs> 委托
  • 【linux驱动】【设备树】按键设备树讲解
  • WaterStamp —— 一个实用的网页水印生成器开发记
  • 【周输入】510周阅读推荐-3
  • c/c++数据类型转换.
  • 二:操作系统之进程控制块(PCB)
  • Selinux权限问题处理指导文档分享
  • 菱形继承原理
  • 中国与全球电子取证行业市场报告(公开信息版)
  • 暴雨大讲堂:高性能计算面临的芯片挑战
  • 牛客网NC210769: 字母大小写转换问题解析
  • HJ5 进制转换【牛客网】
  • Python 中二维列表(list)(嵌套列表)详解
  • uWSGI是什么?
  • Java中关于方法的调用和递归
  • 【cursor】有效解决
  • Appium自动化测试环境搭建及配置
  • 西门子1200/1500博图(TIA Portal)寻址方式详解
  • AI 制作游戏美术素材流程分享(程序员方向粗糙版)
  • CCpro工程编程软件
  • Git从入门到精通
  • centos7.9扩展已有分区空间
  • [LevelDB]LevelDB版本管理的黑魔法-为什么能在不锁表的情况下管理数据?
  • bus hound抓取的数据包各字段含义解释
  • DAY26 函数定义与参数
  • 2025年- H28-Lc136- 24.两两交换链表中的节点(链表)---java版
  • Java开发经验——阿里巴巴编码规范实践解析3
  • 创建指定版本的vite项目