首页 > 其他分享 >修改表时先删除后添加思想-cnblog

修改表时先删除后添加思想-cnblog

时间:2023-02-04 17:15:26浏览次数:43  
标签:updateWithFlavor dishDto 修改 表时 口味 添加 菜品 dish cnblog

4.3.2 修改菜品信息

4.3.2.1 代码实现

点击保存按钮,页面发送ajax请求,将修改后的菜品相关数据以json形式提交到服务端。在修改菜品信息时需要注意,除了要更新dish菜品表,还需要更新dish_flavor菜品口味表。

1). 在DishService接口中扩展方法updateWithFlavor

//更新菜品信息,同时更新对应的口味信息
public void updateWithFlavor(DishDto dishDto);

2). 在DishServiceImpl中实现方法updateWithFlavor

在该方法中,我们既需要更新dish菜品基本信息表,还需要更新dish_flavor菜品口味表。而页面再操作时,关于菜品的口味,有修改,有新增,也有可能删除,我们应该如何更新菜品口味信息呢,其实,无论菜品口味信息如何变化,我们只需要保持一个原则: 先删除,后添加。

@Override
@Transactional
public void updateWithFlavor(DishDto dishDto) {
    //更新dish表基本信息
    this.updateById(dishDto);

    //清理当前菜品对应口味数据---dish_flavor表的delete操作
    LambdaQueryWrapper<DishFlavor> queryWrapper = new LambdaQueryWrapper();
    queryWrapper.eq(DishFlavor::getDishId,dishDto.getId());

    dishFlavorService.remove(queryWrapper);

    //添加当前提交过来的口味数据---dish_flavor表的insert操作
    List<DishFlavor> flavors = dishDto.getFlavors();

    flavors = flavors.stream().map((item) -> {
        item.setDishId(dishDto.getId());
        return item;
    }).collect(Collectors.toList());

    dishFlavorService.saveBatch(flavors);
}

3). 在DishController中创建update方法

/**
* 修改菜品
* @param dishDto
* @return
*/
@PutMapping
public R<String> update(@RequestBody DishDto dishDto){
    log.info(dishDto.toString());
    dishService.updateWithFlavor(dishDto);
    return R.success("修改菜品成功");
}
4.3.2.2 功能测试

代码编写完成之后,重启服务,然后按照前面分析的操作流程进行测试,查看数据是否正常修改即可。

标签:updateWithFlavor,dishDto,修改,表时,口味,添加,菜品,dish,cnblog
From: https://www.cnblogs.com/lingxin1123/p/17091900.html

相关文章

  • 线程变量-cnblog
    1.3.2ThreadLocalThreadLocal并不是一个Thread,而是Thread的局部变量。当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程......
  • spring-data-redis-cnblog
    5.3SpringDataRedis5.3.1介绍SpringDataRedis是Spring的一部分,提供了在Spring应用中通过简单的配置就可以访问Redis服务,对Redis底层开发包进行了高度封装......
  • number类型id和String类型id处理-cnblog
    4.4功能测试代码编写完毕之后,我们需要将工程重启。然后访问前端页面,进行"启用"或"禁用"的测试。测试过程中没有报错,但是功能并没有实现,查看数据库中的数据也没有......
  • 事务管理-cnblog
    4).DishServiceImpl中实现方法saveWithFlavor页面传递的菜品口味信息,仅仅包含name和value属性,缺少一个非常重要的属性dishId,所以在保存完菜品的基本信息后,我们需要获......
  • 全局异常处理解决重复添加同一用户-cnblog
    2.6全局异常处理2.6.1思路分析要想解决上述测试中存在的问题,我们需要对程序中可能出现的异常进行捕获,通常有两种处理方式:A.在Controller方法中加入try...catch进行......
  • 过滤器实现登录拦截-cnblog
    1.3代码实现1).定义登录校验过滤器自定义一个过滤器LoginCheckFilter并实现Filter接口,在doFilter方法中完成校验的逻辑。那么接下来,我们就根据上述分析的步骤......
  • 文件上传解决方案-cnblog
    1.文件上传下载1.1上传介绍1.1.1概述文件上传,也称为upload,是指将本地图片、视频、音频等文件上传到服务器上,可以供其他用户浏览或下载的过程。文件上传在项目中应用......
  • 不使用docker部署项目需要启动的一些服务-cnblog
    mysqlredis./redis-servenginx:./nginx源springboot项目:nohupjava-jarhelloworld-1.0-SNAPSHOT.jar&>hello.log&springboot项目部署到服务器的注意......
  • SSM复习-cnblog
    依赖注入,注入配置文件中的属性名1.2加载properties文件上节中我们已经完成两个数据源druid和C3P0的配置,但是其中包含了一些问题,我们来分析下:这两个数据源中都使用到......
  • idea配置-cnblog
    另起一行快捷键shift+enter--------->ctrl+enter设置字号17,行距1.2,字体Consolas自动导包创建一个类自动生成注释信息......