菜品分页查询
对于菜品分页查询中的categorId的部分不是特别理解,需要多看几遍视频。
↓
@Autowired
private CategoryService categoryService;
//菜品分页查询
@GetMapping("/page")
public R<Page> page(int page,int pageSize ,String name){
//构造分页构造器对象
Page<Dish> pageInfo = new Page<>(page,pageSize);
Page<DishDto> dishDtoPage = new Page<>();
//条件构造器
LambdaQueryWrapper<Dish> queryWrapper = new LambdaQueryWrapper<>();
//添加过滤条件
queryWrapper.like(name !=null,Dish::getName,name);
//添加排序条件
queryWrapper.orderByDesc(Dish::getUpdateTime);
//执行分页查询
dishService.page(pageInfo,queryWrapper);
//对象拷贝
BeanUtils.copyProperties(pageInfo,dishDtoPage,"records"); //将pageInfo拷贝到dishDtoPage(Page里面有records方法)除去records方法不拷贝
//获取Page 里面的Records字段
List<Dish> records = pageInfo.getRecords();
List<DishDto> list = records.stream().map((dish) -> { // dish 为每个菜品对象
DishDto dishDto = new DishDto();
BeanUtils.copyProperties(dish,dishDto);
Long categoryId = dish.getCategoryId(); // 菜品的分类id
//根据id查询分类对象
Category category = categoryService.getById(categoryId);
if (category != null){
dishDto.setCategoryName(category.getName());
}
return dishDto;
}).collect(Collectors.toList());
//赋值
dishDtoPage.setRecords(list);
return R.success(dishDtoPage);
}
修改菜品
将主要方法封装到service里,controller里很简单,这里代码也不太熟悉,和上面的对比,应该类似。
/**
* 根据id查询菜品信息和对应口味信息
* **/
public DishDto getByIdWithFlavor(Long id){
// 从dish表中查询 菜品的基本信息
Dish dish = this.getById(id); //根据id查询
DishDto dishDto = new DishDto();
//拷贝
BeanUtils.copyProperties(dish,dishDto);
//查询当前菜品对应的口味信息,从dish_flavor表查询
LambdaQueryWrapper<DishFlavor> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DishFlavor::getDishId,dish.getId());
List<DishFlavor> flavors = dishFlavorService.list(queryWrapper);
dishDto.setFlavors(flavors);
return dishDto;
}