一、接口详情
二、判断业务逻辑
1、新增菜品,设计到两张表dish和dish_flavor表,一下是参数传递:
2、新建参数实体类dto继承dish实体类
@Data
public class DishDto extends Dish {
private List<DishFlavor> flavors = new ArrayList<>();
private String categoryName;
private Integer copies;
}
3、新建mapper和service和serviceImp类
4、创建controller,参数传递记得查看参数类型,比如这个是JSON类型的需要@RequestBody来进行接收
@PostMapping
public Message save(@RequestBody DishDto dishDto){
log.info(dishDto.toString());
dishService.saveWithFlavor(dishDto);
return Message.success("新增菜品成功!");
}
打断点并查看接受参数是否有误!然后发现菜品id即DishId没有被封装进去;
5、新增要新增两张表的数据所以,在DishService中添加saveWithFlavor(DishDto dishDto)方法,直接在controller调用即可;
@Service
public class DishServiceImp extends ServiceImpl<DishMapper, Dish> implements DishService {
@Autowired
private DishFlavorService dishFlavorService;
/**
* 新增菜品同时保存菜品口味
* @param dishDto
*/
@Override
public void saveWithFlavor(DishDto dishDto) {
//保存菜品的基本信息,到Dish表当中
this.save(dishDto);
//保存菜品口味,因为传递过来的参数没有id所以先处理
//先获取菜品的ID
Long dishId = dishDto.getId();
//遍历这个口味集合将disId赋值
List<DishFlavor> flavorList = dishDto.getFlavors().stream().map(item -> {
item.setDishId(dishId);
return item;
}).collect(Collectors.toList());
dishFlavorService.saveBatch(flavorList);
}
}