前言
在學習中,遇到要使用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查詢就能實現分頁,爲什麼不會影響到其他查詢;還可以考慮分頁安全性問題。有挺多蠻值得學習的。