当前位置: 首页 > news >正文

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(一页的大小)

 @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不是一定要一起使用.看自己的需求选择。

/*** 员工分页查询* @param employeePageQueryDTO* @return*/@Overridepublic 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接口

 /*** 员工分页查询* @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语句。

http://www.dtcms.com/a/276019.html

相关文章:

  • 在 Android 库模块(AAR)中,BuildConfig 默认不会自动生成 VERSION_CODE 和 VERSION_NAME 字段
  • docker基础与常用命令
  • 如何让AI更高效
  • 留学真相:凌晨两点被海关拦下时,我才明白人生没有退路
  • 如何用Python编程实现一个简单的Web爬虫?
  • Echarts学习方法分享:跳过新手期,光速成为图表仙人!
  • 【Lucene/Elasticsearch】 数据类型(ES 字段类型) | 底层索引结构
  • 易混淆英语单词对比解析与记忆表
  • 股票的k线
  • BKD 树(Block KD-Tree)Lucene
  • 以太坊重放攻击
  • 特辑:Ubuntu,前世今生
  • 关于学习docker中遇到的问题
  • AI领域的黄埔军校:OpenAI是新一代的PayPal Mafia,门生故吏遍天下
  • 可以用一台伺服电机控制多台丝杆升降机联动使用吗
  • 类和对象—多态
  • C语言:20250712笔记
  • SpringBoot集合Swagger2构建可视化API文档
  • P2619 [国家集训队] Tree I
  • 【Datawhale AI夏令营】Task2 笔记:MCP Server开发的重难点
  • 【LeetCode 热题 100】98. 验证二叉搜索树——(解法一)前序遍历
  • Python 三大高频标准库实战指南——json · datetime · random 深度解析
  • 【Java入门到精通】(二)Java基础语法(上)
  • 27. 移除元素
  • 【android bluetooth 协议分析 07】【SDP详解 1】【SDP 介绍】
  • 19th Day| 530.二叉搜索树的最小绝对差,501.二叉搜索树中的众数, 236.二叉树的最近公共祖先
  • springboot3X 整合高版本mybatisplus
  • pyqt5绘制矩形和线条
  • 【从零开始编写数据库:基于Python语言实现数据库ToyDB的ACID特性】
  • C语言<数据结构-单链表>(收尾)