【外卖系统】菜品信息分页查询

需求分析

当菜品数据很多时,用分页的形式来展示列表数据

代码开发

  • 页面发送ajax请求,将分页查询参数提交到服务端,获取分页数据
  • 页面发送请求,请求服务端进行图片下载,用于页面图片展示

构造分页

注意:
这里不能直接返回,否则分页查询显示的信息不是完整的。比如要展示菜品名称,返回的数据是没有菜品名称的。
后端返回的数据中,也需要有categoryName这个数据

java 复制代码
package com.springboot.reggie.controller;


import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.springboot.reggie.common.R;
import com.springboot.reggie.dto.DishDto;
import com.springboot.reggie.entity.Category;
import com.springboot.reggie.entity.Dish;
import com.springboot.reggie.entity.DishFlavor;
import com.springboot.reggie.service.CategoryService;
import com.springboot.reggie.service.DishFlavorService;
import com.springboot.reggie.service.DishService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.stream.Collectors;

/**
 * 菜品管理
 */
@RestController
@RequestMapping("/dish")
@Slf4j
public class DishController {
    @Autowired
    private DishService dishService;//菜品服务
    @Autowired
    private DishFlavorService dishFlavorService;//菜品口味
    @Autowired
    private CategoryService categoryService;//菜品分类
    @PostMapping
    public R<String> save(@RequestBody DishDto dishDto)//记得封装要加RequestBody注解
    {
        log.info(dishDto.toString());
        dishService.saveWithFlavor(dishDto);
        return R.success("新增菜品成功...");
    }

    /**
     * 菜品信息分页查询
     * @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<>();
        //添加过滤条件
        //使用模糊查询
        queryWrapper.like(name != null,Dish::getName,name);
        //添加排序条件 根据更新时间进行降序排序
        queryWrapper.orderByDesc(Dish::getUpdateTime);
        //执行分页查询
        dishService.page(pageInfo,queryWrapper);
        //将上面pageInfo对象中的属性拷贝到dishDtoPage中去
        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);
        if(category != null)
        {
            String categoryName = category.getName();
            dishDto.setCategoryName(categoryName);
        }
         String categoryName = category.getName();
         dishDto.setCategoryName(categoryName);
        return  dishDto;
        }).collect(Collectors.toList());
      //  List<DishDto> list = null;

        dishDtoPage.setRecords(list);
        return R.success(pageInfo);
    }

}
相关推荐
陈文锦丫19 小时前
MQ的学习
java·开发语言
乌暮19 小时前
JavaEE初阶---线程安全问题
java·java-ee
爱笑的眼睛1119 小时前
GraphQL:从数据查询到应用架构的范式演进
java·人工智能·python·ai
Seven9719 小时前
剑指offer-52、正则表达式匹配
java
代码or搬砖20 小时前
RBAC(权限认证)小例子
java·数据库·spring boot
青蛙大侠公主20 小时前
Thread及其相关类
java·开发语言
Coder_Boy_20 小时前
DDD从0到企业级:迭代式学习 (共17章)之 四
java·人工智能·驱动开发·学习
2301_7683502320 小时前
MySQL为什么选择InnoDB作为存储引擎
java·数据库·mysql
派大鑫wink20 小时前
【Java 学习日记】开篇:以日记为舟,渡 Java 进阶之海
java·笔记·程序人生·学习方法