当前位置:   article > 正文

菜品信息分页查询——后端SpringBoot

菜品信息分页查询——后端SpringBoot

1.分页查询的逻辑:

        页面发送ajax请求,将分页查询参数(page,pageSize, name)提交到服务端,获取分页数据;

        页面发送请求,请求服务端进行图片下载,用于页面图片展示。

开发菜品信息分页查询功能,就是在服务端处理前端页面发送的这两次请求。

2.代码实现:

  1. /**
  2. * 菜品信息分页查询
  3. * @param page
  4. * @param pageSize
  5. * @param name
  6. * @return
  7. */
  8. @GetMapping("/page")
  9. public R<Page> page(int page, int pageSize, String name){
  10. //构造分页构造器对象
  11. Page<Dish> pageInfo = new Page<>(page, pageSize);
  12. //条件构造器
  13. LambdaQueryWrapper<Dish> queryWrapper = new LambdaQueryWrapper<>();
  14. //添加过滤条件
  15. queryWrapper.like(name != null, Dish::getName, name);
  16. //添加排序条件
  17. queryWrapper.orderByDesc(Dish::getUpdateTime);
  18. //执行分页查询
  19. dishService.page(pageInfo, queryWrapper);
  20. return R.success(pageInfo);
  21. }

          如上,构造分页构造器对象,进行条件过滤,执行分页查询。但是存在一个问题,菜品分类的数据无法显示:

        这是因为服务器返回的结果中只有categoryId, 没有categoryName的属性:

        因此修改代码如下:

  1. @GetMapping("/page")
  2. public R<Page> page(int page, int pageSize, String name){
  3. //构造分页构造器对象
  4. Page<Dish> pageInfo = new Page<>(page, pageSize);
  5. Page<DishDto> dishDtoPage = new Page<>();
  6. //条件构造器
  7. LambdaQueryWrapper<Dish> queryWrapper = new LambdaQueryWrapper<>();
  8. //添加过滤条件
  9. queryWrapper.like(name != null, Dish::getName, name);
  10. //添加排序条件
  11. queryWrapper.orderByDesc(Dish::getUpdateTime);
  12. //执行分页查询
  13. dishService.page(pageInfo, queryWrapper);
  14. //对象拷贝
  15. BeanUtils.copyProperties(pageInfo, dishDtoPage, "records");
  16. List<Dish> records = pageInfo.getRecords();
  17. List<DishDto> list = records.stream().map((item) ->{
  18. DishDto dishDto = new DishDto();
  19. BeanUtils.copyProperties(item, dishDto);
  20. Long categoryId = item.getCategoryId();//分类id
  21. Category category = categoryService.getById(categoryId);
  22. if(category != null){
  23. String categoryName = category.getName();
  24. dishDto.setCategoryName(categoryName);
  25. }
  26. return dishDto;
  27. }).collect(Collectors.toList());
  28. dishDtoPage.setRecords(list);
  29. return R.success(dishDtoPage);
  30. }

        利用BeanUtils进行对象拷贝,将除了records的属性拷贝到dishDtoPage,然后将records里的每一条的id拿到手,并查找到对应的类,如果不为空,类的名字赋给dishDto里的分类名。返回DishDto类,并通过Collectors.toList()把每一条菜品DishDto都收集起来成一个集合赋值给List<DishDto> list。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/716655
推荐阅读
相关标签
  

闽ICP备14008679号