新增菜品——后端SpringBoot

交互逻辑:

  1. 页面发送ajax请求,请求服务端获取菜品分类数据并展示到下拉框中
  2. 页面发送请求进行图片上传,请求服务端将图片保存到服务器
  3. 页面发送请求进行图片下载,将上传的图片进行回显
  4. 点击保存按钮,发送ajax请求,将菜品相关数据以json形式提交到服务器

核心:

        新增菜品功能,实质就是在服务端处理前端页面发送的4次请求。

代码:

1.查询分类数据

在CategoryController.java中:

    /**
     * 根据条件来查询分类数据
     * @param category
     * @return
     */
    @GetMapping("/list")
    public R<List<Category>> list(Category category){
        //条件构造器
        LambdaQueryWrapper<Category> queryWrapper = new LambdaQueryWrapper<>();
        //添加条件
        queryWrapper.eq(category.getType()!=null, Category::getType, category.getType());
        //添加排序条件
        queryWrapper.orderByAsc(Category::getSort).orderByDesc(Category::getUpdateTime);

        List<Category> list = categoryService.list(queryWrapper);
        return R.success(list);
    }

2.接收页面提交的数据

封装页面提交的数据:

@Data
public class DishDto extends Dish {

    private List<DishFlavor> flavors = new ArrayList<>();

    private String categoryName;

    private Integer copies;
}

在dishController.java中保存数据:


@RestController
@RequestMapping("/dish")
@Slf4j
public class DishController {
    @Autowired
    private DishService dishService;

    @Autowired
    private DishFlavorService dishFlavorService;

    /**
     * 新增菜品
     * @param dishDto
     * @return
     */
    @PostMapping
    public R<String> save(@RequestBody DishDto dishDto){
        log.info(dishDto.toString());

        return null;
    }
}

3.保存数据

需要操作dish、dishFlavor两张表,即同时插入菜品对应的口味数据:

3.1 接口dishService处声明:

public interface DishService extends IService<Dish> {

    //新增菜品,同时插入菜品对应的口味数据,操作dish、dishFlavor两张表
    public void saveWithFlavor(DishDto dishDto);
}

3.2 实现类处实现:

DishFlavor中的dishId要赋好值。 

@Transactional注解作用是确保保存菜品基本信息和保存菜品口味数据的过程实是在一个事务中完成的。

    @Autowired
    private DishFlavorService dishFlavorService;
    /**
     * 新增菜品,同时保存对应的口味数据
     * @param dishDto
     */

    @Transactional
    public void saveWithFlavor(DishDto dishDto) {
        //保存菜品的基本信息到dish表
        this.save(dishDto);

        Long dishId = dishDto.getId(); //菜品id

        //菜品口味
        List<DishFlavor> flavors = dishDto.getFlavors();
        flavors = flavors.stream().map((item) ->{
            item.setDishId(dishId);
            return item;
        }).collect(Collectors.toList());
        //获取菜品口味集合中的Stream流,遍历每个DishFlavor对象,将其id赋值为dishDto里的菜品id
        //最后通过Collectors.toList()收集器将流中的元素收集到一个新的List集合中

        //保存菜品的口味数据到dish_flavor表中
        dishFlavorService.saveBatch(flavors);
    }

相关推荐

  1. 新增——SpringBoot

    2024-06-09 19:56:03       10 阅读
  2. 新增套餐——

    2024-06-09 19:56:03       6 阅读
  3. Flask 管理

    2024-06-09 19:56:03       27 阅读
  4. springboot项目

    2024-06-09 19:56:03       29 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-09 19:56:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-09 19:56:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-09 19:56:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-09 19:56:03       20 阅读

热门阅读

  1. python手动搭建transformer,并实现自回归推理

    2024-06-09 19:56:03       11 阅读
  2. 如何实现观察者模式和发布-订阅模式?

    2024-06-09 19:56:03       11 阅读
  3. 关于 Git 的几个使用技巧

    2024-06-09 19:56:03       8 阅读
  4. 速盾:网站重生之我开了高防cdn

    2024-06-09 19:56:03       11 阅读
  5. 贪心算法 之 股票 跳跃游戏1and2

    2024-06-09 19:56:03       8 阅读
  6. flink学习-处理函数

    2024-06-09 19:56:03       11 阅读
  7. k8s面试题大全,保姆级的攻略哦(二)

    2024-06-09 19:56:03       10 阅读
  8. Web前端vdisk:技术与应用的深度解析

    2024-06-09 19:56:03       10 阅读
  9. ubuntu开机黑屏

    2024-06-09 19:56:03       6 阅读
  10. 基于axios给请求添加token

    2024-06-09 19:56:03       9 阅读