- 查看URL
首先查看网页请求的URL
如图所示,/后面跟的是setmeal的id
所以需要注意请求路径
2. 显示页面原来的数据(setmeal原来的数据先显示)
根据URL的id进行查询数据
需要注意的是如果只是根据id查询Setmeal的数据,那么菜品信息就不能查询到,所以需要使用到setmealDish这一张表,将Dish也查出来
具体的Service层如下:
@Override
public SetmealDto getByIdWithDish(Long id) {
Setmeal setmeal = this.getById(id);
SetmealDto setmealDto=new SetmealDto();
BeanUtils.copyProperties(setmeal,setmealDto);
//查询Steam对应的Dish
LambdaQueryWrapper<SetmealDish> queryWrapper=new LambdaQueryWrapper<>();
queryWrapper.eq(SetmealDish::getSetmealId,setmeal.getId());
List<SetmealDish> dishes = setmealDishService.list(queryWrapper);
setmealDto.setSetmealDishes(dishes);
return setmealDto;
}
那么Controller层就直接调用就好
@GetMapping("/{id}")
public R<SetmealDto> updata(@PathVariable Long id){
SetmealDto setmealDto= setmealService.getByIdWithDish(id);
return R.success(setmealDto);
}
- 修改信息提交
将原来的数据进行回显了之后,就需要将修改后的数据进行保存了
方法一样,首先查看URL
接下来写Service层的实现类,对提交过来的数据进行保存,这里注意一下,提交过来的数据不仅仅有Setmeal还有Dish,所以需要保存SetmealDto这个类型
service层的代码如下
@Override
public void updataWithDish(SetmealDto setmealDto) {
//保存当前的Setmeal基本信息
this.updateById(setmealDto);
//清理当前的表
LambdaQueryWrapper<SetmealDish> queryWrapper=new LambdaQueryWrapper<>();
queryWrapper.eq(SetmealDish::getSetmealId,setmealDto.getId());
setmealDishService.remove(queryWrapper);
//更新表
List<SetmealDish> setmealDishes = setmealDto.getSetmealDishes();
setmealDishes=setmealDishes.stream().map((item)->{
item.setSetmealId(setmealDto.getId());
return item;
}).collect(Collectors.toList());
setmealDishService.saveBatch(setmealDishes);
}
接下来是controller进行直接调用就好
@PutMapping
public R<String> updata(@RequestBody SetmealDto setmealDto){
setmealService.updataWithDish(setmealDto);
return R.success("修改成功!");
}
完成(^-^)V