前言
在学习中,遇到要使用pageHelper插件,所以记录一下该插件的简单使用步骤。
第一步、在pom文件中引入jar包
最好引用最新jar包,因为最新版本会更新一些bug或者优化,让插件更好用。
<pagehelper.version>4.1.6</pagehelper.version>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>${pagehelper.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
第二步、在SqlMapConfig.xml中配置插件
如果没有配置的话,pageHelper插件将不生效
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 配置分页插件 -->
<plugins>
<plugin interceptor="com.github.pagehelper.PageHelper">
<!-- 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库-->
<property name="dialect" value="mysql"/>
</plugin>
</plugins>
</configuration>
在查询的sql语句执行之前,添加代码设置page、rows
page:表示要显示第几页。
rows:表示每页显示的记录数。
通过下面的代码设置:
// 设置分页参数,进行分页处理
PageHelper.startPage(page, rows);
// 查询,下一个查询的页面参数将不再生效,需要再一次设置page、rows
List<TbItem> items = tbItemMapper.selectByExample(example);
下一个查询的页面参数将不再生效,如果需要分页,那就要再一次设置page、rows
第四步、取查询结果的详细信息
通过创建一个PageInfo类的对象,从对象中取分页信息
(旧版本pageHelper的jar包不包含这个对象,故建议用新版本jar包= =!)
// 获得查询结果的详细信息
PageInfo<TbItem> pageInfo = new PageInfo<>(items);
注意:
分页插件对逆向工程生成的代码支持不好,原来使用的是(3.4.2版本),发现对有查询条件的查询分页,会抛异常。
但是后来使用4.1.6版本,就可以支持有查询条件的查询分页了。
总结
-
实现流程:实际插件是对mybatis执行流程进行了增强,在执行sql语句中添加了limit以及count语句,属于物理分页
-
思考问题:
pageHelper还有很多需要学习的地方,本文只是单纯记录一下基本使用。
后面还需要思考更多问题,比如PageHelper.startPage(page, rows); 之后接上一个select查询就能实现分页,为什么不会影响到其他查询;还可以考虑分页安全性问题。有挺多蛮值得学习的。