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

十五、MyBatis使用PageHelper

1.limit分页

limit分页原理
在这里插入图片描述
mysql的limit后面两个数字:
第一个数字:startIndex(起始下标。下标从0开始。)
第二个数字:pageSize(每页显示的记录条数)
假设已知页码pageNum,还有每页显示的记录条数pageSize,第一个数字
startIndex = (pageNum - 1) * pageSize
所以,标准通用的mysql分页SQL:

select * 
from tableName ...... 
limit (pageNum - 1) * pageSize, pageSize

2. PageHelper插件

使用PageHelper插件进行分页,更加的便捷。
第一步:引入依赖

<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.3.1</version>
</dependency>

第二步:在mybatis-config.xml文件中配置插件

<!--mybatis分页的拦截器-->
<plugins><plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>

第三步:编写Java代码

关键点:

  • 在查询语句之前开启分页功能。
  • 在查询语句之后封装PageInfo对象。(PageInfo对象将来会存储到request域当中。在页面上展示。)
@Test
public void testSelectAll(){SqlSession sqlSession = SqlSessionUtil.openSession();CarMapper mapper = sqlSession.getMapper(CarMapper.class);// 在执行DQL语句之前,开启分页功能//查询第二页,前三条记录int pageNum = 2;int pageSize = 3;PageHelper.startPage(pageNum, pageSize);List<Car> cars = mapper.selectAll();cars.forEach(car -> System.out.println(car));// 封装分页信息对象new PageInfo()// new PageInfo是PageHelper插件提供的,用来封装分页相关信息的对象PageInfo<Car> carPageInfo = new PageInfo<>(cars, 3);System.out.println(carPageInfo);/*PageInfo{pageNum=2, pageSize=3, size=3, startRow=4, endRow=6, total=17, pages=6,list=Page{count=true, pageNum=2, pageSize=3, startRow=3, endRow=6, total=17, pages=6, reasonable=false, pageSizeZero=false}[Car{id=6, carNum='1003', brand='丰田霸道', guidePrice=30.00, produceTime='2000-10-11', carType='燃油车'},Car{id=7, carNum='1003', brand='丰田霸道', guidePrice=30.00, produceTime='2000-10-11', carType='燃油车'},Car{id=8, carNum='1003', brand='丰田霸道', guidePrice=30.00, produceTime='2000-10-11', carType='燃油车'}],prePage=1, nextPage=3, isFirstPage=false, isLastPage=false, hasPreviousPage=true, hasNextPage=true,navigatePages=3, navigateFirstPage=1, navigateLastPage=3, navigatepageNums=[1, 2, 3]}*/sqlSession.close();
}
http://www.lryc.cn/news/25603.html

相关文章:

  • 【MySQL】B+ 树索引
  • Android Gradle Plugin Version 和 Gradle Version 的对应关系
  • 更多单词/词组/短语补充和总结(二)
  • HEC-HMS和HEC-RAS快速入门、防洪评价报告编制及洪水建模、洪水危险性评价等应用
  • 全面了解 B 端产品设计 — 基础扫盲篇
  • 顺序表(增删查改)
  • 一款优秀的低代码开发平台是什么样的?
  • ElasticSearch 学习笔记总结(四)
  • HDFS文件块大小
  • C++——优先级队列(priority_queue)的使用及实现
  • Linux学习记录——십일 环境变量
  • 【人工智能 Open AI 】我们程序员真的要下岗了- 全能写Go / C / Java / C++ / Python / JS 人工智能机器人
  • STM32 EXTI外部中断
  • Mapper代理开发——书接MaBatis的简单使用
  • 实体对象说明
  • JAVA中加密与解密
  • 改进YOLO系列 | ICLR2022 | OMNI-DIMENSIONAL DYNAMIC CONVOLUTION: 全维动态卷积
  • 信息收集之Github搜索语法
  • 【案例教程】拉格朗日粒子扩散模式FLEXPART
  • 试题 算法训练 自行车停放
  • 泛型与Map接口
  • Unity Bug记录本
  • B. The Number of Products)厉害
  • 一起Talk Android吧(第五百一十二回:自定义Dialog)
  • GinVueAdmin源码分析3-整合MySQL
  • 大数据框架之Hadoop:MapReduce(三)MapReduce框架原理——MapReduce开发总结
  • requests---(4)发送post请求完成登录
  • Python抓取数据具体流程
  • 【Python学习笔记】第二十四节 Python 正则表达式
  • 数字逻辑基础:原码、反码、补码