解释程序 @GetMapping("/dish/{id}") public R<List<DishDto>> dish(@PathVariable("id") Long SetmealId){ LambdaQueryWrapper<SetmealDish> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(SetmealDish::getSetmealId,SetmealId); //获取套餐里面的所有菜品 这个就是SetmealDish表里面的数据 List<SetmealDish> list = setmealDishService.list(queryWrapper); List<DishDto> dishDtos = list.stream().map((setmealDish) -> { DishDto dishDto = new DishDto(); //其实这个BeanUtils的拷贝是浅拷贝,这里要注意一下 BeanUtils.copyProperties(setmealDish, dishDto); //这里是为了把套餐中的菜品的基本信息填充到dto中,比如菜品描述,菜品图片等菜品的基本信息 Long dishId = setmealDish.getDishId(); Dish dish = dishService.getById(dishId); BeanUtils.copyProperties(dish, dishDto); return dishDto; }).collect(Collectors.toList()); return R.success(dishDtos); }
时间: 2023-06-12 08:03:35 浏览: 152
@PathVariable和@RequestParam的区别1
这段代码是一个 Spring Boot 的 RESTful API 接口方法,处理 GET 请求,请求路径为 "/dish/{id}",其中的 {id} 是一个路径参数,表示 Setmeal 的 ID。
该方法会返回一个 R 对象,其中包含了一个 DishDto 类型的 List,表示 Setmeal 中的菜品列表。DishDto 是一个数据传输对象,包含了菜品的基本信息,例如菜品描述、菜品图片等。
在方法实现中,首先根据 Setmeal ID 从数据库表 SetmealDish 中查询出所有与该 Setmeal 相关的菜品,然后使用 Java 8 的 Stream API 对每个菜品进行处理,将其转换为 DishDto 对象,并将基本信息填充到 DishDto 对象中,最后将所有 DishDto 对象收集到一个 List 中并返回。
需要注意的是,BeanUtils 的拷贝是浅拷贝,如果 Dish 对象中包含了其他对象的引用,那么这些引用也会被拷贝,但是拷贝后的对象只是一个新的引用,不会创建新的对象。
阅读全文