/**
* 保存菜品和口味信息
* @param dishDTO
*/
@Transactional //开启声明式事务
@Override
public void saveWithFlavors(DishDTO dishDTO) {
Dish dish = new Dish();
BeanUtils.copyProperties(dishDTO,dish);
//1.保存菜品
dishMapper.save(dish);
if(dishDTO.getFlavors()!=null && dishDTO.getFlavors().size()>0) {
//需要在保存菜品的时候返回菜品id
Long dishId = dish.getId();
//将所有的口味对象设置dishId
List<DishFlavor> dishFlavorList = dishDTO.getFlavors().stream()
.map(dishFlavor -> {
dishFlavor.setDishId(dishId);
return dishFlavor;
})
.collect(Collectors.toList());
//2.保存口味
dishFlavorMapper.saveBatchFlavoies(dishFlavorList);
}
}
ps:
当一个逻辑涉及多个sql语句的时候需要使用@Transactional注解
BeanUtils.copyProperties(A,B);把A复制到B(复制其中的相同的内容,与这两个人无关,只要名字相同都可以复制)