1. 程式人生 > >分頁外掛pagehelper初使用,前端傳遞當前頁碼與每頁條數後臺接受實現分頁

分頁外掛pagehelper初使用,前端傳遞當前頁碼與每頁條數後臺接受實現分頁

最新的專案用到了pagehelper分頁外掛,在此做下筆記方便以後檢視!同時也希望能對別人產生幫助。

1.因為專案是maven進行管理的,所以:第一步就是在pom.xml檔案中引入pagehelper分頁外掛。

<dependency>
   <groupId>com.github.pagehelper</groupId>
   <artifactId>pagehelper-spring-boot-starter</artifactId>
   <version>1.2.3</version>
</dependency>

2.專案執行成功 ,呼叫資料庫資料前加一句程式碼即可實現分頁 :PageHelper.startPage(pageNum, pageSize)
分頁成功後,實際返回的結果list型別是Page<E>,如果想取出分頁資訊,有兩種方法:

需要強制轉換為Page<E>,或者使用PageInfo類(下面的例子有介紹)

方法一:強轉

serviceImpl層

controller層

Page<E>:需要詳細瞭解可以查下每個屬性的含義。

方法二:使用PageInfo類

public PageInfo<Doc> selectDocByPage1(int currentPage, int pageSize) {
        PageHelper.startPage(currentPage, pageSize);
        List<Doc> docs = docMapper.selectByPageAndSelections();
        PageInfo<Doc> pageInfo = new PageInfo<>(docs);
        return pageInfo;
    }

pageInfo:需要詳細瞭解可以查下每個屬性的含義。 

/**
     * 頁碼,從1開始
     */
    private int pageNum;
    /**
     * 頁面大小
     */
    private int pageSize;
    /**
     * 起始行
     */
    private int startRow;
    /**
     * 末行
     */
    private int endRow;
    /**
     * 總數
     */
    private long total;
    /**
     * 總頁數
     */
    private int pages;
    /**
     * 包含count查詢
     */
    private boolean count = true;
    /**
     * count訊號,3種情況,null的時候執行預設BoundSql,true的時候執行count,false執行分頁
     */
    private Boolean countSignal;
    /**
     * 排序
     */
    private String orderBy;
    /**
     * 只增加排序
     */
    private boolean orderByOnly;
    /**
     * 分頁合理化
     */
    private Boolean reasonable;
    /**
     * 當設定為true的時候,如果pagesize設定為0(或RowBounds的limit=0),就不執行分頁,返回全部結果
     */
    private Boolean pageSizeZero;

注意:PageHelper只對緊跟著的第一個SQL語句起作用

    //獲取第1頁,10條內容,預設查詢總數count
    PageHelper.startPage(1, 10);

    //緊跟著的第一個select方法會被分頁
    List<Country> list = countryMapper.selectIf(1);

    //後面的不會被分頁,除非再次呼叫PageHelper.startPage
    List<Country> list2 = countryMapper.selectIf(null);
    //list1
    assertEquals(2, list.get(0).getId());
    assertEquals(10, list.size());
    //分頁時,實際返回的結果list型別是Page<E>,如果想取出分頁資訊,需要強制轉換為Page<E>,
    //或者使用PageInfo類(下面的例子有介紹)
    assertEquals(182, ((Page) list).getTotal());
    //list2
    assertEquals(1, list2.get(0).getId());
    assertEquals(182, list2.size());

如果想知道為什麼會這樣可以搜搜pageHelper實現分頁的原理。