MyBatis实现分页查询-苍穹外卖笔记

首先分页查询的原理是SQL的limit关键字。

LIMIT 子句用于限制 SQL 查询返回的记录数。它接受一个或两个整数参数,第一个参数表示偏移量,第二个参数表示返回的最大记录数。

我们完全可以使用前端传给我们的page,pageSize,自己去计算limit的参数,但是这样效率很慢。

所以有了分页插件pageHelper.

1 首先引入pageHeper的Maven坐标
复制代码
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
</dependency>
2 在Controller层接受分页请求

主要参数是Page(第几页),PageSize(一页的大小)

java 复制代码
 @GetMapping("/page")
    public Result<PageResult> Page(EmployeePageQueryDTO employeePageQueryDTO)
    {
       PageResult pageResult=employeeService.PageQuery(employeePageQueryDTO);

       return Result.success(pageResult);


    }

这里参数用一个对象接收

3 Service层逻辑处理

PageHepler可以帮助我们计算limit的参数,并同时帮我们把limit加在普通的select语句中,变成分页查询。这样一来执行分页,我们只需要在Mapper配置普通的查询语句,由PageHelper帮我们补上limit所需语句。

page继承了ArrayList,所以它可以接收查询的返回结果,多个数据本身就会返回一个集合。

如果不想用Page,直接使用ArrayList也是可以的,只不过Page有更多的功能,所以pageHeper和Page不是一定要一起使用.看自己的需求选择。

java 复制代码
/**
     * 员工分页查询
     * @param employeePageQueryDTO
     * @return
     */
    @Override
    public PageResult PageQuery(EmployeePageQueryDTO employeePageQueryDTO) {


        // PageHepler可以帮助我们计算limit的参数,并同时帮我们把limit加在普通的select语句中,变成条件查询。
        PageHelper.startPage(employeePageQueryDTO.getPage(),employeePageQueryDTO.getPageSize());

        //执行分页,我们只需要在Mapper配置普通的查询语句,由上面的帮我们补上limit所需语句。
        //page继承了ArrayList,所以它可以接收查询的返回结果,多个数据本身就会返回一个集合。
       //如果不想用Page,直接使用ArrayList也是可以的,只不过Page有更多的功能
         Page<Employee> pages=employeeMapper.PageQuery(employeePageQueryDTO);

         PageResult pageResult=new PageResult();
         pageResult.setRecords(pages.getResult());
      return pageResult;
    }
4 Mapper层的SQL配置

Mapper接口

java 复制代码
 /**
     * 员工分页查询
     * @param employeePageQueryDTO
     * @return
     */
    Page<Employee> PageQuery(EmployeePageQueryDTO employeePageQueryDTO);

Mapper对应SQL

复制代码
<select id="PageQuery" resultType="Employee">
select * from employee
<where>
    <if test="name!=null and name!=''">
      name like concat("%",#{name},"%")
    </if>
</where>

</select>

很明显这里只是一个普通的查询,并没有limit语句,这正是pageHelper的作用,帮我们计算好参数,然后加入SQL语句。

相关推荐
橘子海全栈攻城狮4 分钟前
【最新源码】养老院系统管理A013
java·spring boot·后端·web安全·微信小程序
逻辑驱动的ken10 分钟前
Java高频面试考点18
java·开发语言·数据库·算法·面试·职场和发展·哈希算法
zhangrelay20 分钟前
三分钟云课实践速通--模拟电子技术-模电--SimulIDE
linux·笔记·学习·ubuntu·lubuntu
木木_王26 分钟前
嵌入式Linux学习 | 数据结构 (Day05) 栈与队列详解(原理 + C 语言实现 + 实战实验 + 易错点剖析)
linux·c语言·开发语言·数据结构·笔记·学习
lkforce30 分钟前
MiniMind学习笔记(三)--train_pretrain.py(预训练)
笔记·机器学习·ai·预训练·minimind·train_pretrain
OSwich37 分钟前
【 Godot 4 学习笔记】数组(Array)
笔记·学习·godot
冷雨夜中漫步41 分钟前
Claude Code源码分析——Claude Code Agent Loop 详细设计文档
java·开发语言·人工智能·ai
直奔標竿1 小时前
Java开发者AI转型第二十六课!Spring AI 个人知识库实战(五)——联网搜索增强实战
java·开发语言·人工智能·spring boot·后端·spring
数据皮皮侠AI1 小时前
中国城市可再生能源数据集(2005-2021)|顶刊 Sci Data 11 种能源面板
大数据·人工智能·笔记·能源·1024程序员节
其实防守也摸鱼1 小时前
面试常问问题总结--护网蓝队方向
网络·笔记·安全·面试·职场和发展·护网·初级蓝队