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

接口分析

接口

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

相关推荐
迪康coolmu7 小时前
出差终端数据安全落地实战:基于迪康端点安全一体化管理系统的四道防线实践
运维·服务器·经验分享·笔记·其他·安全·php
无咎.lsy10 小时前
《机器学习》笔记
笔记·机器学习
坤坤子吖11 小时前
Linux网络编程:TCP服务器的多进程与多线程实现
linux·服务器·开发语言·网络·c++·笔记·学习
蒸蒸yyyyzwd13 小时前
后端相关学习笔记。
笔记·学习
旖旎夜光14 小时前
【C++ 基础入门】C++ 多态(上):虚函数、重写、override/final 与抽象类
开发语言·c++·笔记·学习
Oll Correct15 小时前
Adobe illustrator 案例十二:视频播放(Media & Video)图标绘制
笔记·ui·adobe·illustrator
橙橙笔记16 小时前
QT的学习第四部分
linux·qt·学习·音视频
叼烟扛炮16 小时前
Linux 学习笔记(五十四):内网穿透实战——用 frp 让外网访问你的私人电脑
linux·服务器·网络·笔记·学习
在猴站学算法16 小时前
(《统计学习方法》(第2版) 李航)第2章 感知机算法
学习·算法·机器学习·统计学习
旖旎夜光17 小时前
【C++ 基础入门】C++ 继承(上):概念、切片、隐藏、默认成员函数与友元
c++·笔记·学习