在ssm+maven框架中使用pageHelper插件

前言

在学习中,遇到要使用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版本,就可以支持有查询条件的查询分页了。

总结

  1. 实现流程:实际插件是对mybatis执行流程进行了增强,在执行sql语句中添加了limit以及count语句,属于物理分页
    在这里插入图片描述

  2. 思考问题:
    pageHelper还有很多需要学习的地方,本文只是单纯记录一下基本使用。
    后面还需要思考更多问题,比如PageHelper.startPage(page, rows); 之后接上一个select查询就能实现分页,为什么不会影响到其他查询;还可以考虑分页安全性问题。有挺多蛮值得学习的。

拓展:
PageHelper简单使用
PageHelper4.1.6的使用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章