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

接口分析

接口

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来进行筛选条件

相关推荐
丝斯20112 分钟前
AI学习笔记整理(75)——Python学习4
人工智能·笔记·学习
ID_180079054734 分钟前
小红书笔记详情API深度解析:数据获取与应用实践
笔记
JulyLi201913 分钟前
RK3576 yolov8部署笔记
笔记·yolo
小帅学编程14 分钟前
英语学习笔记
java·笔记·学习
AI成长日志14 分钟前
【datawhale】hello agents开源课程学习记录第4章:智能体经典范式构建
学习·开源
EnglishJun17 分钟前
ARM嵌入式学习(七)--- 汇编基础(数据指令、函数调用原理、中断原理)
arm开发·学习
浅念-18 分钟前
C ++ 智能指针
c语言·开发语言·数据结构·c++·经验分享·笔记·算法
今儿敲了吗20 分钟前
python基础学习笔记第七章——文件操作
笔记·python·学习
ADHD多动联盟37 分钟前
提升自控力差孩子的学习生活:有效的学习障碍帮助与冲动控制训练方法
学习·学习方法·玩游戏
Yu_Lijing1 小时前
基于C++的《Head First设计模式》笔记——生成器模式
c++·笔记·设计模式