苍穹外卖--新增菜品

设计DTO类

cpp 复制代码
在sky-pojo模块中

```java
@Data
public class DishDTO implements Serializable {

    private Long id;
    //菜品名称
    private String name;
    //菜品分类id
    private 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模块

java 复制代码
package com.sky.controller.admin;
/**
 * 菜品管理
 */
@RestController
@RequestMapping("/admin/dish")
@Api(tags = "菜品相关接口")
@Slf4j
public class DishController {

    @Autowired
    private DishService dishService;

    /**
     * 新增菜品
     *
     * @param dishDTO
     * @return
     */
    @PostMapping
    @ApiOperation("新增菜品")
    public Result save(@RequestBody DishDTO dishDTO) {
        log.info("新增菜品:{}", dishDTO);
        dishService.saveWithFlavor(dishDTO);//后绪步骤开发
        return Result.success();
    }
}

Service层

java 复制代码
 @Transactional//事务管理
    @Override
    public 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层

cpp 复制代码
  @AutoFill(value = OperationType.INSERT)
    void insert(Dish dish);
cpp 复制代码
在/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 复制代码
<?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>
相关推荐
Cuit小唐8 分钟前
C++ 状态模式详解
开发语言·c++·状态模式
AALoveTouch16 分钟前
大某麦演唱会门票如何自动抢
python
落羽的落羽33 分钟前
【落羽的落羽 C++】stack和queue、deque、priority_queue、仿函数
开发语言·c++
阿乾之铭41 分钟前
Java后端文件类型检测(防伪造)
java·开发语言
sunbyte1 小时前
Three.js + React 实战系列 - 联系方式提交表单区域 Contact 组件✨(表单绑定 + 表单验证)
开发语言·javascript·react.js
(ღ星辰ღ)1 小时前
js应用opencv
开发语言·javascript·opencv
不会飞的鲨鱼1 小时前
Windows系统下使用Kafka和Zookeeper,Python运行kafka(二)
windows·zookeeper·kafka
忧陌6061 小时前
Day22打卡-复习
python
HY小海1 小时前
【数据结构】双链表
c语言·开发语言·数据结构·学习
Go Dgg2 小时前
Go语言实现豆瓣电影Top250爬虫
开发语言·爬虫·golang