spring mvc 整合分頁插件
1. 導入 pagehelper 依賴
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.1.3</version> </dependency>
2. spring mybatis 整合分頁配置
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!--<property name="dataSource" ref="readWriteDbRoute"/>--> <property name="dataSource" ref="dynamicDataSource"/> <property name="mapperLocations" value="classpath*:config/mybatis/*.xml"/> <property name="plugins"> <array> <bean class="com.github.pagehelper.PageHelper"> <property name="properties"> <value> // 數據源類型:mysql, mariadb, sqlite, oracle, hsqldb, postgresql, sqlserver, db2, informix, h2, sqlserver2012 helperDialect=mysql <!--分頁合理化參數,設置為true時,pageNum<=0時會查詢第一頁,pageNum>pages(超過總數時),會查詢最后一頁。--> reasonable=true </value> </bean> </array> </property> </bean>
3. 使用
PageHelper.startPage(pageNum, limit);
// 查詢
注意:查詢不需要寫limit。每次查詢都會有統計查詢和分頁查詢,執行兩次sql,應該對查詢相應速度有影響,沒有具體測試過
配置參數說明
1. helperDialect :分頁插件會自動檢測當前的數據庫鏈接,自動選擇合適的分頁方式。 你可以配置 helperDialect 屬性來指定分頁插件使用哪種方言。配置時,可以使用下面的縮寫值: oracle , mysql , mariadb , sqlite , hsqldb , postgresql , db2 , sqlserver , informix , h2 , sqlserver2012 , 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 后,不會關閉獲取的連接,這個參數的設置要根據自己選擇的數據源來決定。