日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PageHelper概述与基本使用步骤介绍

發布時間:2024/4/13 编程问答 60 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PageHelper概述与基本使用步骤介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

訂單分頁查詢

PageHelper介紹

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

本項目在 github 的項目地址:https://github.com/pagehelper/Mybatis-PageHelper

本項目在 gitosc 的項目地址:http://git.oschina.net/free/Mybatis_PageHelper

PageHelper使用

集成

引入分頁插件有下面2種方式,推薦使用 Maven 方式。

引入 Jar 包

你可以從下面的地址中下載最新版本的 jar 包

https://oss.sonatype.org/content/repositories/releases/com/github/pagehelper/pagehelper/
http://repo1.maven.org/maven2/com/github/pagehelper/pagehelper/

由于使用了sql 解析工具,你還需要下載 jsqlparser.jar:

http://repo1.maven.org/maven2/com/github/jsqlparser/jsqlparser/0.9.5/

使用 Maven

在 pom.xml 中添加如下依賴:

<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>最新版本</version> </dependency>

配置

特別注意,新版攔截器是 com.github.pagehelper.PageInterceptor 。 com.github.pagehelper.PageHelper 現在是一個特殊的 dialect 實現類,是分頁插件的默認實現類,提供了和以前相同的用法。

在 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>

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

使用 spring 的屬性配置方式,可以使用 plugins 屬性像下面這樣配置:

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!-- 注意其他配置 --><property name="plugins"><array><bean class="com.github.pagehelper.PageInterceptor"><property name="properties"><!--使用下面的方式配置參數,一行配置一個 --><value>params=value1</value></property></bean></array></property> </bean>

分頁插件參數介紹

1. 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的基本使用有6種,大家可以查看文檔,最常用的有兩種

RowBounds方式的調用(了解)

List<Country> list = sqlSession.selectList("x.y.selectIf", null, new RowBounds(1, 10));

使用這種調用方式時,你可以使用RowBounds參數進行分頁,這種方式侵入性最小,我們可以看到,通過RowBounds方式調用只是使用了這個參數,并沒有增加其他任何內容。

分頁插件檢測到使用了RowBounds參數時,就會對該查詢進行物理分頁。

關于這種方式的調用,有兩個特殊的參數是針對 RowBounds 的,你可以參看上面的分頁插件參數介紹

:不只有命名空間方式可以用RowBounds,使用接口的時候也可以增加RowBounds參數,例如:

//這種情況下也會進行物理分頁查詢 List<Country> selectAll(RowBounds rowBounds);

注意: 由于默認情況下的 RowBounds 無法獲取查詢總數,分頁插件提供了一個繼承自 RowBounds 的PageRowBounds ,這個對象中增加了 total 屬性,執行分頁查詢后,可以從該屬性得到查詢總數。

PageHelper.startPage 靜態方法調用(重點)

這種方式是我們要掌握的 在你需要進行分頁的 MyBatis 查詢方法前調用PageHelper.startPage 靜態方法即可,緊跟在這個方法后的第一個MyBatis 查詢方法會被進行分頁。

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

?

總結

以上是生活随笔為你收集整理的PageHelper概述与基本使用步骤介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。