SpringBoot項目集成PageHelper使用


SpringBoot項目集成PageHelper使用

一、開始

​ 地址:https://github.com/pagehelper/Mybatis-PageHelper

​ 在spring boot項目中使用PageHelper,只需要兩步:

1、導入maven

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.0.0</version>
</dependency>
<dependency>
    <groupId>tk.mybatis</groupId>
    <artifactId>mapper-spring-boot-starter</artifactId>
    <version>2.1.5</version>
</dependency>
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.10</version>
</dependency>

2、使用

 //[pageNum, pageSize]  頁碼  每頁顯示數量
 PageHelper.startPage(pageNum,pageSize);
 PageInfo<UserInfo> pageInfo = new PageInfo<>(UserInfoService.selectUserList());

查詢結果

1571054106247

這就是pagehelper的簡單使用。但是還有高級玩法。

二、進階

官方文檔中,提供了很多的參數供我們配置:

helperDialectoffsetAsPageNumrowBoundsWithCountpageSizeZeroreasonableparamssupportMethodsArgumentsautoRuntimeDialectcloseConn等等

spring boot項目里面,到application.yml中進行配置

pagehelper:
  # dialect: ①
  # 分頁插件會自動檢測當前的數據庫鏈接,自動選擇合適的分頁方式(可以不設置)
  helper-dialect: mysql 
  # 上面數據庫設置后,下面的設置為true不會改變上面的結果(默認為true)
  auto-dialect: true 
  page-size-zero: false # ②
  reasonable: true # ③
  # 默認值為 false,該參數對使用 RowBounds 作為分頁參數時有效。(一般用不着)
  offset-as-page-num: false 
  # 默認值為 false,RowBounds是否進行count查詢(一般用不着)
  row-bounds-with-count: false 
  #params: ④
  #support-methods-arguments: 和params配合使用,具體可以看下面的講解
  # 默認值為 false。設置為 true 時,允許在運行時根據多數據源自動識別對應方言的分頁
  auto-runtime-dialect: false # ⑤
  # 與auto-runtime-dialect配合使用
  close-conn: true 
  # 用於控制默認不帶 count 查詢的方法中,是否執行 count 查詢,這里設置為true后,total會為-1
  default-count: false 
  #dialect-alias: ⑥

①:默認情況下會使用 PageHelper 方式進行分頁,如果想要實現自己的分頁邏輯,可以實現 Dialect(com.github.pagehelper.Dialect) 接口,然后配置該屬性為實現類的全限定名稱。(這里不推薦這樣玩,畢竟你用了別人的插件,干嘛還要多此一舉呢?)


②:默認值為 false,當該參數設置為 true 時,如果 pageSize=0 或者 RowBounds.limit = 0 就會查詢出全部的結果(相當於沒有執行分頁查詢,但是返回結果仍然是 Page 類型)。


③:合法性,即糾錯機制,配置reasonabletrue,這時如果 pageNum <= 0 會查詢第一頁,如果 pageNum > pages 會查詢最后一頁。


④:為了支持startPage(Object params)方法,增加了該參數來配置參數映射,用於從對象中根據屬性名取值, 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默認值, 默認值為
pageNum=pageNum;
pageSize=pageSize;
count=countSql;
reasonable=reasonable;
pageSizeZero=pageSizeZero
support-methods-arguments支持通過 Mapper 接口參數來傳遞分頁參數,默認值false,分頁插件會從查詢方法的參數值中,自動根據上面 params 配置的字段中取值,查找到合適的值時就會自動分頁。


⑤:默認值為false。設置為 true 時,允許在運行時根據多數據源自動識別對應方言的分頁,

closeConn:默認值為 true。當使用運行時動態數據源或沒有設置 helperDialect 屬性自動獲取數據庫類型時,會自動獲取一個數據庫連接, 通過該屬性來設置是否關閉獲取的這個連接,默認true關閉,設置為 false 后,不會關閉獲取的連接,這個參數的設置要根據自己選擇的數據源來決定。


⑥:dialect-alias 參數,允許配置自定義實現的 別名,可以用於根據JDBCURL自動獲取對應實現,允許通過此種方式覆蓋已有的實現,配置示例如(多個配置用分號;隔開):

pagehelper.dialect-alias=oracle=com.github.pagehelper.dialect.helper.OracleDialect

幾種不同的玩法

     	//1. offsetPage
        PageHelper.offsetPage(1, 10);
        return PageInfo.of(userService.findAll());
        //2. Lambda
        return PageHelper.startPage(1, 10).doSelectPageInfo(() -> userService.findAll());

     //部分屬性
     System.out.println("總數量"+pageInfo.getTotal());
     System.out.println("當前頁查詢記錄"+pageInfo.getList().size());
     System.out.println("當前頁碼"+pageInfo.getPageNum());
     System.out.println("每頁顯示數量"+pageInfo.getPageSize());
     System.out.println("總頁"+pageInfo.getPages());


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM