PageHelper 分頁插件

一、PageHelper的介紹
PageHelper是國內非常優秀的一款開源的mybatis分頁插件,它支持基本主流與常用的數據庫,例如mysql、oracle、mariaDB、DB2、SQLite、Hsqldb等。

PageHelper以我目前淺淺的瞭解是:其本質是封裝了一個pagebean類,我們所查詢傳遞過來的currentpage(當前頁)和pagesize(每頁要顯示的條數)封裝到一個bean類中,在這個框架中的這個類是 PageInfo 。裏面有當前的頁數、當前頁的記錄數、總頁數、總的記錄數、每頁顯示的數據的集合等等其他的。

下面是在GitHub和碼雲上的更爲詳細的參考文檔
本項目在 github 的項目地址
本項目在 gitosc 的項目地址

二、PageHelper入門使用
這個是在maven中的使用,使用的是SSM的框架,下面是一個簡單搭建PageHelper。
1、在pom.xml中添加如下依賴

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

2、配置

注意:在 MyBatis 配置 xml 中配置攔截器插件 和 在 Spring 配置文件中配置攔截器插件,只需要在使用一個配置就可以,二者選其一就可以了。

2.2.1、在 MyBatis 配置 xml 中配置攔截器插件

<!--
	plugins在配置文件中的位置必須符合要求,否則會報錯,順序如下:
	properties?, settings?,
	typeAliases?, typeHandlers?,
	objectFactory?,objectWrapperFactory?,
	plugins?,
	environments?, databaseIdProvider?, mappers?
-->
<plugins>
	<!-- com.github.pagehelper爲PageHelper類所在包名 -->
	<plugin interceptor="com.github.pagehelper.PageInterceptor">
	<!-- 使用下面的方式配置參數,後面會有所有的參數介紹 -->
	<property name="param1" value="value1"/>
	</plugin>
</plugins>

2.2.2、在 Spring 配置文件中配置攔截器插件

<!-- 把交給IOC管理 SqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <!-- 傳入PageHelper的插件 -->
        <property name="plugins">
            <array>
                <!--傳入插件的對象-->
                <bean class="com.github.pagehelper.PageInterceptor">
                    <property name="properties">
                        <!--使用下面的方式配置參數,一行配置一個 -->
                        <props>
                            <!--分頁插件會自動檢測當前的數據庫鏈接,自動選擇合適的分頁方式。
                             你可以配置  helperDialect 屬性來指定分頁插件使用哪種方言-->
                            <prop key="helperDialect">oracle</prop>
                            <!--分頁合理化參數,默認值爲false 。
                                當該參數設置爲 true 時, pageNum<=0 時會查詢第一頁,
                                pageNum>pages (超過總數時),會查詢最後一頁。
                                默認false 時,直接根據參數進行查詢。-->
                            <prop key="reasonable">true</prop>
                        </props>
                    </property>
                </bean>
            </array>
        </property>
    </bean>

2.2.3、基本使用
2.2.3.1、PageHelper.startPage 靜態方法調用
這種方式是我們要掌握的 在你需要進行分頁的 MyBatis 查詢方法前調用PageHelper.startPage 靜態方法即可,緊跟在這個方法後的第一個MyBatis 查詢方法會被進行分頁。
例:在service中的使用

//獲取第1頁,10條內容,默認查詢總數count
PageHelper.startPage(1, 10);
//緊跟着的第一個select方法會被分頁
List list = countryMapper.selectIf(1);

2.2.4、在controller中的使用

//查詢所有的訂單  --分頁
@RequestMapping("/findAllFenYe.do")
public ModelAndView findAllFenYe(@RequestParam(name = "page", required = true, defaultValue = "1") Integer page, @RequestParam(name = "pageSize", required = true, defaultValue = "4") Integer pageSize) throws Exception{
    ModelAndView mv = new ModelAndView();

    List<Orders> orders=ordersService.findAllFenYe(page,pageSize);
    //PageInfo 就是一個分頁的bean
    PageInfo pageInfo = new PageInfo(orders);

    mv.addObject("pageInfo",pageInfo);
    mv.setViewName("orders-page-list");

    return mv;
}

2.2.5、分頁插件參數介紹

helperDialect :分頁插件會自動檢測當前的數據庫鏈接,自動選擇合適的分頁方式。 你可以配置
helperDialect 屬性來指定分頁插件使用哪種方言。配置時,可以使用下面的縮寫值:
oracle , mysql , mariadb , sqlite , hsqldb , postgresql , db2 , sqlserver , informix , h2 , sqlserver201
2 , derby
特別注意:使用 SqlServer2012 數據庫時,需要手動指定爲 sqlserver2012 ,否則會使用 SqlServer2005 的
方式進行分頁。
你也可以實現 AbstractHelperDialect ,然後配置該屬性爲實現類的全限定名稱即可使用自定義的實現方
法。
2. offsetAsPageNum :默認值爲 false ,該參數對使用 RowBounds 作爲分頁參數時有效。 當該參數設置爲 true 時,會將 RowBounds 中的 offset 參數當成 pageNum 使用,可以用頁碼和頁面大小兩個參數進行分 頁。
3. rowBoundsWithCount :默認值爲false ,該參數對使用 RowBounds 作爲分頁參數時有效。 當該參數設置 爲true 時,使用 RowBounds 分頁會進行 count 查詢。
4. pageSizeZero :默認值爲 false ,當該參數設置爲 true 時,如果 pageSize=0 或者 RowBounds.limit = 0 就會查詢出全部的結果(相當於沒有執行分頁查詢,但是返回結果仍然是 Page 類型)。
5. reasonable :分頁合理化參數,默認值爲false 。當該參數設置爲 true 時, pageNum<=0 時會查詢第一 頁, pageNum>pages (超過總數時),會查詢最後一頁。默認false 時,直接根據參數進行查詢。
6. params :爲了支持startPage(Object params) 方法,增加了該參數來配置參數映射,用於從對象中根據屬 性名取值, 可以配置 pageNum,pageSize,count,pageSizeZero,reasonable ,不配置映射的用默認值,
默認 值爲
pageNum=pageNum;pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZero=pageSizeZero

7. supportMethodsArguments :支持通過 Mapper 接口參數來傳遞分頁參數,默認值false ,分頁插件會從查 詢方法的參數值中,自動根據上面 params 配置的字段中取值,查找到合適的值時就會自動分頁。 使用方法 可以參考測試代碼中的
com.github.pagehelper.test.basic 包下的 ArgumentsMapTest 和
ArgumentsObjTest 。
8. autoRuntimeDialect :默認值爲 false 。設置爲 true 時,允許在運行時根據多數據源自動識別對應方言 的分頁 (不支持自動選擇sqlserver2012 ,只能使用sqlserver ),用法和注意事項參考下面的場景五。
9. closeConn :默認值爲 true 。當使用運行時動態數據源或沒有設置 helperDialect 屬性自動獲取數據庫類 型時,會自動獲取一個數據庫連接, 通過該屬性來設置是否關閉獲取的這個連接,默認true 關閉,設置爲 false
後,不會關閉獲取的連接,這個參數的設置要根據自己選擇的數據源來決定。

以上就是一個PageHelper的簡單的介紹。非常感謝提供者框架的開發人員,這個框架節省了我們很多代碼的編寫,而且非常好用。無限崇拜!!!

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