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

SpringBoot修改菜品模块开发

需求分析与设计

一:产品原型

在菜品管理列表页面点击修改按钮,跳转到修改菜品页面,在修改页面回显菜品相关信息并进行修改,最后点击保存按钮完成修改操作。

修改菜品原型:

二:接口设计

通过对上述原型图进行分析,该页面共涉及4个接口。

接口:

  • 根据id查询菜品(用于回显菜品信息)

  • 根据类型查询分类(已实现)

  • 文件上传(已实现)

  • 修改菜品

我们只需要实现根据id查询菜品修改菜品两个接口,接下来,我们来重点分析这两个接口。

  1). 根据id查询菜品

2). 修改菜品

代码开发

一:Controller层

    /*** 根据id查询菜品** @param 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);}
	/*** 修改菜品** @param dishDTO* @return*/@PutMapping@ApiOperation("修改菜品")public Result update(@RequestBody DishDTO dishDTO) {log.info("修改菜品:{}", dishDTO);dishService.updateWithFlavor(dishDTO);return Result.success();}

二:Service层

	/*** 根据id查询菜品和对应的口味数据** @param id* @return*/public 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;}

	/*** 根据id修改菜品基本信息和对应的口味信息** @param dishDTO*/public 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());});//向口味表插入n条数据dishFlavorMapper.insertBatch(flavors);}}

三:Mapper层

    /*** 根据菜品id查询对应的口味数据* @param dishId* @return*/@Select("select * from dish_flavor where dish_id = #{dishId}")List<DishFlavor> getByDishId(Long dishId);
<update id="update">update dish<set><if test="name != null and name != ''">name = #{name},</if><if test="categoryId != null and categoryId != ''">category_id = #{categoryId},</if><if test="price != null and price != ''">price = #{price},</if><if test="image != null and image != ''">image = #{image},</if><if test="description != null and description != ''">description = #{description},</if><if test="status != null and status != ''">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.lryc.cn/news/339842.html

相关文章:

  • Rust开发笔记 | 系统编程的守护神
  • dcoker+nginx解决前端本地开发跨域
  • 基于云开发和微信小程序的爱宠家系统
  • 光场相机建模与畸变校正改进方法
  • 面试算法-173-二叉树的直径
  • Python Typing模块
  • 【鸿蒙开发】饿了么页面练习
  • 鸿蒙开发学习笔记第一篇--TypeScript基础语法
  • Java基础知识总结(55)
  • python爬虫 - 爬取微博热搜数据
  • Pytorch-张量形状操作
  • k8s的service为什么不能ping通?——所有的service都不能ping通吗
  • [Linux] 权限控制命令 chmod、chown和chgrp
  • RNN知识体系构筑:详尽阐述其理论基础、技术架构及其在处理序列数据挑战中的创新应用
  • LeetCode 1702.修改后的最大二进制字符串:脑筋急转弯(构造,贪心)
  • 图片像素轻松缩放自如,支持批量将多张jpg图片像素放大,高效掌握图片的像素
  • FILE类与IO流
  • 基于java+springboot+vue实现的智慧党建系统(文末源码+Lw+ppt)23-58
  • HiveSQL基础Day03
  • houdini 学习过程
  • Angular学习第四天--问题记录及父子组件问题
  • 如何拿捏2024年的B端设计?(附工具推荐)
  • 【蓝桥杯】2024年第15届真题题目
  • LLM生成模型在生物单细胞single cell的应用:scGPT
  • 力扣15题. 三数之和
  • 项目经理好还是产品经理好?入行必读!
  • Elastic安装后 postman对elasticsearch进行测试
  • JPA (Java Persistence API)
  • 实战要求下,如何做好资产安全信息管理
  • [matlab]matcaffe在matlab2023a安装和配置过程