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

苍穹外卖--新增菜品

设计DTO类

在sky-pojo模块中```java
@Data
public class DishDTO implements Serializable {private Long id;//菜品名称private String name;//菜品分类idprivate Long categoryId;//菜品价格private BigDecimal price;//图片private String image;//描述信息private String description;//0 停售 1 起售private Integer status;//口味private List<DishFlavor> flavors = new ArrayList<>();
}

Controller层

进入到sky-server模块

package com.sky.controller.admin;
/*** 菜品管理*/
@RestController
@RequestMapping("/admin/dish")
@Api(tags = "菜品相关接口")
@Slf4j
public class DishController {@Autowiredprivate DishService dishService;/*** 新增菜品** @param dishDTO* @return*/@PostMapping@ApiOperation("新增菜品")public Result save(@RequestBody DishDTO dishDTO) {log.info("新增菜品:{}", dishDTO);dishService.saveWithFlavor(dishDTO);//后绪步骤开发return Result.success();}
}

Service层

 @Transactional//事务管理@Overridepublic void add(DishDTO dishDTO) {Dish dish= new Dish();BeanUtils.copyProperties(dishDTO,dish);dishMapper.addDish(dish);Long id = dish.getId();//主键返回
//        for (DishFlavor flavor : dishDTO.getFlavors()) {
//            flavor.setDishId(id);
//        }List<DishFlavor> flavors = dishDTO.getFlavors();if (flavors != null && flavors.size() > 0) {flavors.forEach(dishFlavor -> {dishFlavor.setDishId(id);});//向口味表插入n条数据dishFlavorMapper.addFlover(flavors);//后绪步骤实现}//        List<DishFlavor> dishFlavors=dishDTO.getFlavors();
//        dishFlavorMapper.addFlover(dishFlavors);}

Mapper层

  @AutoFill(value = OperationType.INSERT)void insert(Dish dish);
/resources/mapper中创建DishMapper.xml```xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.sky.mapper.DishMapper"><insert id="insert" useGeneratedKeys="true" keyProperty="id">//主键返回insert into dish (name, category_id, price, image, description, create_time, update_time, create_user,update_user, status)values (#{name}, #{categoryId}, #{price}, #{image}, #{description}, #{createTime}, #{updateTime}, #{createUser}, #{updateUser}, #{status})</insert>
</mapper>

DishFlavorMapper.java```java
package com.sky.mapper;import com.sky.entity.DishFlavor;
import java.util.List;@Mapper
public interface DishFlavorMapper {/*** 批量插入口味数据* @param flavors*/void insertBatch(List<DishFlavor> flavors);}

在/resources/mapper中创建DishFlavorMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.sky.mapper.DishFlavorMapper"><insert id="insertBatch">insert into dish_flavor (dish_id, name, value) VALUES<foreach collection="flavors" item="df" separator=",">(#{df.dishId},#{df.name},#{df.value})</foreach></insert>
</mapper>

相关文章:

  • 【数据挖掘 机器学习 | 时间序列】时间序列必学模型: ARIMA超详细讲解
  • Windows 下 Sublime Text 2.0.2 下载及配置
  • fusion 360制作机械臂
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • adb shell settings高级指令设置系统属性所有的指令汇总+注释
  • Android跨进程通信,IPC,RPC,Binder系统,C语言应用层调用
  • 【Qt之QStandardItemModel】使用,tableview、listview、treeview设置模型
  • 【C++】【Opencv】cv::warpAffine()仿射变换函数详解,实现平移、缩放和旋转等功能
  • ChatGPT简介及基本概念
  • 吴恩达《机器学习》8-5->8-6:特征与直观理解I、样本与值观理解II
  • 【我和Python算法的初相遇】——体验递归的可视化篇
  • 拍照小白入坑
  • Android VSYNC发展历程
  • es的优势
  • Lec14 File systems 笔记
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 【面试系列】之二:关于js原型
  • axios 和 cookie 的那些事
  • CSS魔法堂:Absolute Positioning就这个样
  • idea + plantuml 画流程图
  • Joomla 2.x, 3.x useful code cheatsheet
  • learning koa2.x
  • node.js
  • node入门
  • PhantomJS 安装
  • select2 取值 遍历 设置默认值
  • SpiderData 2019年2月25日 DApp数据排行榜
  • 订阅Forge Viewer所有的事件
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 分享一份非常强势的Android面试题
  • 基于组件的设计工作流与界面抽象
  • 记录一下第一次使用npm
  • 盘点那些不知名却常用的 Git 操作
  • 如何编写一个可升级的智能合约
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 一个SAP顾问在美国的这些年
  • 移动端解决方案学习记录
  • 源码安装memcached和php memcache扩展
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​Python 3 新特性:类型注解
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • ​ubuntu下安装kvm虚拟机
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (分布式缓存)Redis哨兵
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (南京观海微电子)——COF介绍
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .NET 材料检测系统崩溃分析