SpringBoot之分页查询的使用

背景

在业务中我们在前端总是需要展示数据,将后端得到的数据进行分页处理,通过pagehelper实现动态的分页查询,将查询页数和分页数通过前端发送到后端,后端使用pagehelper,底层是封装threadlocal得到页数和分页数并动态的拼接到sql中完成分页的查询

代码

菜品的分页查询展示

前端传递对象

java 复制代码
@Data
public class DishPageQueryDTO implements Serializable {

    private int page;

    private int pageSize;

    private String name;

    //分类id
    private Integer categoryId;

    //状态 0表示禁用 1表示启用
    private Integer status;

}

controller层

java 复制代码
/**
     * 菜品分页查询
     *
     * @param dishPageQueryDTO
     * @return
     */
    @GetMapping("/page")
    @ApiOperation("菜品分页查询")
    public Result<PageResult> page(DishPageQueryDTO dishPageQueryDTO) {
        PageResult pageResult = dishService.pageQuery(dishPageQueryDTO);
        return Result.success(pageResult);
    }

service层

java 复制代码
PageResult pageQuery(DishPageQueryDTO dishPageQueryDTO);
java 复制代码
public PageResult pageQuery(DishPageQueryDTO dishPageQueryDTO) {
        PageHelper.startPage(dishPageQueryDTO.getPage(), dishPageQueryDTO.getPageSize());
        Page<DishVO> page = dishMapper.pageQuery(dishPageQueryDTO);
        return new PageResult(page.getTotal(), page.getResult());
    }

将封装好的需要查询的页面和页面大小传给PageHelper,由它为我们动态的拼接到SQL语句中实现分页查询的效果

Mapper层

java 复制代码
Page<DishVO> pageQuery(DishPageQueryDTO dishPageQueryDTO);
xml 复制代码
 <select id="pageQuery" resultType="com.sky.vo.DishVO">
        select d.* , c.name as categoryName from dish d left outer join category c on d.category_id = c.id
        <where>
            <if test="name != null">
                and d.name like concat('%',#{name},'%')
            </if>
            <if test="categoryId != null">
                and d.category_id = #{categoryId}
            </if>
            <if test="status != null">
                and d.status = #{status}
            </if>
        </where>
        order by d.create_time desc
    </select>
相关推荐
问道飞鱼7 小时前
【前端知识】从前端请求到后端返回:Gzip压缩全链路配置指南
前端·状态模式·gzip·请求头
seven_76782309812 小时前
DevUI表单引擎实战:可配置化动态表单与多级联动设计
状态模式·devui·matechat
重生之我在番茄自学网安拯救世界14 小时前
网络安全中级阶段学习笔记(二):网络安全暴力破解学习重点笔记
状态模式·网安基础
小雨青年1 天前
MateChat 进阶实战:打造零后端、隐私安全的“端侧记忆”智能体
前端·华为·ai·华为云·状态模式
兩尛1 天前
项目1相关八股
状态模式
unicrom_深圳市由你创科技2 天前
使用 Vue3 + Nest.js 构建前后端分离项目的完整指南
开发语言·javascript·状态模式
通义灵码2 天前
Java 后端开发工程师使用 Qoder 实现面向 API 的运维平台前端开发
java·运维·状态模式
摘星编程2 天前
基于 DevUI 与 MateChat 构建企业级 AI 智能助手的实践与探索
人工智能·华为云·状态模式
by__csdn2 天前
Vue2纯前端图形验证码实现详解+源码
前端·javascript·typescript·vue·状态模式·css3·canva可画
k***45992 天前
Spring Boot实时推送技术详解:三个经典案例
spring boot·后端·状态模式