Mybatis分页插件PageHelper的配置和使用

发布时间:2024年01月06日

  1. MySQL对分页的支持
    简单来说MySQL对分页的支持是通过limit子句。请看下面的例子。

limit关键字的用法是 LIMIT [offset,] rows offset是相对于首行的偏移量(首行是0),rows是返回条数。

每页10条记录,取第一页,返回的是前10条记录

select * from tableA limit 0,10;

每页10条记录,取第二页,返回的是第11条记录,到第20条记录,

select * from tableA limit 10,10;

这里提一嘴的是,MySQL在处理分页的时候是这样的:

limit 1000,10 - 过滤出1010条数据,然后丢弃前1000条,保留10条。当偏移量大的时候,性能会有所下降。

limit 100000,10 - 会过滤10w+10条数据,然后丢弃前10w条。如果在分页中发现了性能问题,可以根据这个思路调优。

  1. mybatis的工作原理图
    先介绍一下mybatis中的插件是如何工作的,主要作用在哪个环节。mybatis的工作原理图:
    在这里插入图片描述
    从图中可以看出,mybatis中首先要在配置文件中配置一些东西,然后根据这些配置去创建一个会话工厂,再根据会话工厂创建会话,会话发出操作数据库的sql语句,然后通过执行器操作数据,再使用mappedStatement对数据进行封装,这就是整个mybatis框架的执行情况。那么mybatis的插件作用在哪一环节呢?插件主要作用在Executor执行器与mappedeStatement之间,也就是说mybatis可以在插件中获得要执行的sql语句,在sql语句中添加limit语句,然后再去对sql进行封装,从而可以实现分页处理。
      搞清楚了分页插件的执行情况,下面来总结下mybatis中PageHelper的使用。
  2. 引入PageHelper

pom.xml加入:

<dependency>
	<groupId>com.github.pagehelper</groupId>
	<artifactId>pagehelper-spring-boot-starter</artifactId>
	<version>1.2.12</version>
</dependency>

4、在执行sql前添加插件,完成分页功能
在查询的sql语句执行之前,添加一行代码PageHelper.startPage(1, 10);第一个参数表示第几页,第二个参数表示每页显示的记录数。这样在执行sql后就会将记录按照语句中设置的那样进行分页。如果需要获取总记录数的话,需要PageInfo类的对象,这个对象可以获取总记录数。
PageHelper.startPage(page, rows) 相当于是将limit封装了一层,用着更加简单。后续写mapper.xml的sql语句就不需要写limit 了

//获取第1页,10条内容,默认查询总数count
PageHelper.startPage(1, 10);
List<Country> list = countryMapper.selectAll();
文章来源:https://blog.csdn.net/qq_27597629/article/details/135433696
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。