需求分析:
系统中的菜品数据很多时,如果在一个页面中全部展示出来会显得比较乱,不便于查看,所以一般的系统中都会以分页的方式来展示列表数据
代码开发梳理:
1、页面发送ajax请求,将分页查询参数(page, pageSize)提交到服务端,获取分页数据
2、页面发送请求,请求服务端进行图片下载,用于页面图片展示
开发菜品信息分页查询功能,其实就是在服务端编写代码去处理前端页面发送的这2次请求即可
/** * 菜品信息分页 * @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<>(page, pageSize); //构造条件构造器 LambdaQueryWrapper<Dish> queryWrapper = new LambdaQueryWrapper<Dish>(); //添加过滤条件 queryWrapper.like(name!=null, Dish::getName, name); //添加排序条件 queryWrapper.orderByDesc(Dish::getUpdateTime); //执行查询,查询后page内部会将结果封装到pageInfo dishService.page(pageInfo, queryWrapper); //对象拷贝 BeanUtils.copyProperties(pageInfo, dishDtoPage, "records"); List<Dish> records = pageInfo.getRecords(); List<DishDto> list = records.stream().map((item) -> { DishDto dishDto = new DishDto(); BeanUtils.copyProperties(item, dishDto); Long categoryId = item.getCategoryId();//分类id //根据id查询分类对象 Category category = categoryService.getById(categoryId); String categoryName = category.getName(); dishDto.setCategoryName(categoryName); return dishDto; }).collect(Collectors.toList()); dishDtoPage.setRecords(list); return R.success(dishDtoPage); }
菜品分页查询不能直接查询Page<Dish>,因为前端显示信息包含一个菜品类别名称,而dish中只包含categoryId。因此新建一个Page<DishDto>,将Page<Dish>执行完查询后除了records的其它所有数据都copy到Page<DishDto>中,对Page<DishDto>中的records的item重新赋值,在赋值的过程中根据Page<Dish>中records的categoryId查询对应的categoryName,并将其赋值给Page<DishDto>中的item,其他值从Page<Dish>中拷贝。
标签:分页,查询,records,菜品,Page,page From: https://www.cnblogs.com/fxzm/p/17206795.html