学习笔记-菜品接口-菜品分页查询

接口分析

接口

get请求:负责查询数据

/page:对应表示分页查询入口

请求参数

categoryId(分类id)------可选 作用:按分类筛选菜品列表

name(菜品名称)------可选 作用:按菜品名称模糊查询

page(页码)------必需 作用:第几页,从 1 开始

pageSize(每页记录数)------必需 作用:每页返回多少条数据

status(分类状态/菜品状态)

返回响应

1️⃣ code(必需):表示业务状态码

2️⃣ msg:对应的提示信息内容

3️⃣ data:对应的返回的分页数据内容

total:总记录数

records:当前页数据

代码开发

分页DTO对象设计

分页VO对象设计

DIshController

把前端的分页查询请求转换为后端可执行的查询,并返回统一结构

@GetMapping("/page")

HTTP GET 请求映射到这个方法

方法签名:Result<PageResult> page(DishPageQueryDTO dishPageQueryDTO)

返回值:Result<PageResult> ------"统一响应结构"

PageResult ------"分页数据结构"

total:总条数

records:当前页数据列表

形参: DishPageQueryDTO dishPageQueryDTO

Spring MVC 会把 URL 里的 Query 参数自动绑定到 DTO 里同名字段:

  • page=1 → dto.page = 1

  • pageSize=10 → dto.pageSize = 10

  • name=鸡dto.name = "鸡"

  • categoryId=101 → dto.categoryId = 101

  • status=1 → dto.status = 1

调用 Service:dishService.pageQuery(dishPageQueryDTO)

复制代码
调用service其中函数方法返回对应的数据并进行统一封装进行成功响应

DishService&DishServiceImpl其中内容

形参接受对应的DTO对象,后续来返回分页对象PageResult

service负责对应把"分页条件"变成真正的数据库分页查询,并返回前端需要的 total + records

实现类其中来具体实现

方法签名,对应返回PageResult,其中包括对应的total总条数&records当前页数数据列表信息

形参接受对应的DishPageQuertDTO对象

因为分页查询不仅有 page/pageSize,还可能有:

  • name(菜品名模糊)

  • categoryId(分类)

  • status(起售/停售)

PageHelper.startPage(...):分页的"开关"

对应告诉PageHelper,接下来我们需要来执行select 查询"要做分页拦截

它会把分页信息(page、pageSize)放进一个 ThreadLocal 里,然后等待后面 Mapper 执行 SQL 时拦截。

Mapper

id="pageQuery" 必须和 Mapper 接口方法名一致

resultType="com.sky.vo.DishVO" 表示这条 SQL 查出来的每一行结果,MyBatis 要映射成 DishVO 对象

select d.*, c.name as categoryName : 查询菜品其中的所有字段信息以及对应的分类名称

  • 主表:dish(菜品)

  • 关联表:category(分类)

  • 通过 category_id 拿到分类名称

通过<where>+if来进行筛选条件

相关推荐
谙弆悕博士13 分钟前
系统集成项目管理工程师教程(第3版)笔记——第4章:信息系统架构
笔记·系统架构·项目管理·创业创新·学习方法·业界资讯·物理
minglie11 小时前
zynq中linux系统的自动登录和免密登录
学习
茯苓gao2 小时前
嵌入式开发笔记:Qt信号槽机制深度解析——从原理到实战的全方位指南
开发语言·笔记·嵌入式硬件·qt·学习
我想我不够好。3 小时前
监控学习 7.23 1.5hour
学习
A.零点3 小时前
【期末复习,408 考研计组全程笔记 】— 第4章 :指令系统
笔记·考研·408·计算机组成原理
早茶cc4 小时前
sqli1-5 9报错注入 笔记
笔记
摇滚侠4 小时前
Java 全栈开发实战教程 课程笔记 34-36
java·笔记
洵有兮4 小时前
sql注入通关笔记
数据库·笔记·sql·sql注入
今儿敲了吗4 小时前
Python——函数基础
开发语言·笔记·python
不爱记笔记4 小时前
音视频转笔记工具横评2026,通义听悟、Ai好记、NotebookLM 实测对比
人工智能·笔记·ai·音视频·飞书·obsidian