当前位置: 首页 > 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.lryc.cn/news/586605.html

相关文章:

  • comfyUI-controlNet-线稿软边缘
  • python-enumrate函数
  • HarmonyOS从入门到精通:动画设计与实现之六 - 动画曲线与运动节奏控制
  • houdini 用 vellum 制作一个最简单的布料
  • 洛谷题解 | UVA1485 Permutation Counting
  • C++结构体数组应用
  • Spring Boot 中使用 Lombok 进行依赖注入的示例
  • 基于springboot+Vue的二手物品交易的设计与实现(免费分享)
  • 2025年亚太杯(中文赛项)数学建模B题【疾病的预测与大数据分析】原创论文讲解(含完整python代码)
  • jieba 库:中文分词的利器
  • JAVA--双亲委派机制
  • 【springcloud】快速搭建一套分布式服务springcloudalibaba(四)
  • 【一起来学AI大模型】RAG系统流程:查询→向量化→检索→生成
  • 【AI News | 20250711】每日AI进展
  • 【TOOL】ubuntu升级cmake版本
  • AI产品经理面试宝典第12天:AI产品经理的思维与转型路径面试题与答法
  • 功耗校准数据PowerProfile测试方法建议
  • 【深度剖析】致力“四个最”的君乐宝数字化转型(下篇:转型成效5-打造数字化生存能力探索可持续发展路径)
  • VUE3 el-table 主子表 显示
  • Transformer基础
  • Openpyxl:Python操作Excel的利器
  • Qt 多线程编程:单例任务队列的设计与实现
  • 五、深度学习——CNN
  • NW728NW733美光固态闪存NW745NW746
  • C语言32个关键字
  • 锁相环初探
  • Python Day11
  • 《Spring 中上下文传递的那些事儿》Part 11:上下文传递最佳实践总结与架构演进方向
  • LeetCode题解---<485.最大连续1的个数>
  • [Token]Token merging for Vision Generation