这是因为构造的分页查询器泛型中没有这一属性,需要进行增强处理,重新构造该泛型的dto对象的分页构造器,将原有构造器的值拷贝到新的分页构造器,并对原有构造器的records集合进行增强后赋值给现有构造器,再调用构造器进行分页查询
/**
* 菜品分页查询
* @param page
* @param pageSize
* @param name
* @return
*/
@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<>();
//添加过滤条件
//当输入的name不为空时,进行模糊查询
queryWrapper.like(name!=null,Dish::getName,name);
//添加排序条件
queryWrapper.orderByAsc(Dish::getUpdateTime);
//执行分页查询
dishService.page(pageInfo,queryWrapper);
//对象拷贝
//将pageInfo中除了records集合的值,全部拷贝到dishDtoPage中,因为records中数据不完整
BeanUtils.copyProperties(pageInfo,dishDtoPage,"records");
//获取pageInfo中records的集合
List<Dish> records = pageInfo.getRecords();
//因为records中没有菜品分类这一属性,我们需要对records进行处理,增强这一属性
List<DishDto> list=records.stream().map((item)->{
//item是每一个dish对象
DishDto dishDto=new DishDto();
//将dish对象的值拷贝到dishDto中
BeanUtils.copyProperties(item,dishDto);
//获取分类id
Long categoryId = item.getCategoryId();
//根据id查询分类对象->需要注入category业务层接口
Category category = categoryService.getById(categoryId);
if(category!=null){
//获取分类对象中的菜品分类名称->这是最重要的,我们需要的就是这个值
String categoryName = category.getName();
//将菜品分类名称赋值给dishDto对象
dishDto.setCategoryName(categoryName);
}
return dishDto;
}).collect(Collectors.toList());
//设置分页构造器中的条件
dishDtoPage.setRecords(list);
return R.success(dishDtoPage);
}