制作一个分页查询,需要用到增强类,使用对象拷贝完成原类内信息复制到增强类里。
/**
* 分页查询菜品
* @param page
* @param pageSize
* @return
*/
@GetMapping("/page")
Result<Page> getAllByPage(Integer page,Integer pageSize,String name){
//分页构造器
Page<Dish> pageInfo = new Page<>(page,pageSize);
Page<DishDto> dtoPage = new Page<>();
//条件构造器
LambdaQueryWrapper<Dish> lqw = new LambdaQueryWrapper<>();
if(null != name){
lqw.like(Dish::getName,name);
}
//分页查询,查到的数据放到pageInfo里
dishService.page(pageInfo,lqw);
//对象拷贝
//records需处理后再放入dtoPage,故先不复制records
BeanUtils.copyProperties(pageInfo,dtoPage,"records");
//获取所有Dish对象封装到List里
List<Dish> dishes = pageInfo.getRecords();
//新建list,装DishDto对象
List<DishDto> list = new ArrayList<>();
//遍历dishes,将所有dishes复制到DishDto里,并加上categoryName
for (Dish dish : dishes) {
DishDto dishDto = new DishDto();
Long categoryId = dish.getCategoryId();
Category category = categoryService.getById(categoryId);
String name1 = category.getName();
BeanUtils.copyProperties(dish,dishDto);
dishDto.setCategoryName(name1);
list.add(dishDto);
}
//将处理好的records封装进dtoPage
dtoPage.setRecords(list);
return Result.success(dtoPage);
}