Mybatis分頁插件

添加項目依賴

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

修改mybatis核心配置文件,添加plugin

<plugin interceptor="com.github.pagehelper.PageHelper">
    <!-- 4.0.0之後版本能夠不設置該參數 -->
    <property name="dialect" value="mysql"/>
    <!-- 該參數默認爲false -->
    <!-- 設置爲true時,會將RowBounds第一個參數offset當成pageNum頁碼使用 -->
    <!-- 和startPage中的pageNum效果同樣-->
    <property name="offsetAsPageNum" value="true"/>
    <!-- 該參數默認爲false -->
    <!-- 設置爲true時,使用RowBounds分頁會進行count查詢 -->
    <property name="rowBoundsWithCount" value="true"/>
    <!-- 設置爲true時,若是pageSize=0或者RowBounds.limit = 0就會查詢出所有的結果 -->
    <!-- (至關於沒有執行分頁查詢,可是返回結果仍然是Page類型)-->
    <property name="pageSizeZero" value="false"/>
    <!-- 3.3.0版本可用 - 分頁參數合理化,默認false禁用 -->
    <!-- 啓用合理化時,若是pageNum<1會查詢第一頁,若是pageNum>pages會查詢最後一頁 -->
    <!-- 禁用合理化時,若是pageNum<1或pageNum>pages會返回空數據 -->
    <property name="reasonable" value="true"/>
    <!-- 3.5.0版本可用 - 爲了支持startPage(Object params)方法 -->
    <!-- 增長了一個`params`參數來配置參數映射,用於從Map或ServletRequest中取值 -->
    <!-- 能夠配置pageNum,pageSize,count,pageSizeZero,reasonable,orderBy,不配置映射的用默認值 -->
    <!-- 不理解該含義的前提下,不要隨便複製該配置 -->
    <property name="params" value="pageNum=start;pageSize=limit;"/>
    <!-- 支持經過Mapper接口參數來傳遞分頁參數 -->
    <property name="supportMethodsArguments" value="true"/>
    <!-- always老是返回PageInfo類型,check檢查返回類型是否爲PageInfo,none返回Page -->
    <property name="returnPageInfo" value="check"/>
</plugin>

示例

PageList<SettleFlowPendingModel> pageList = new PageList<SettleFlowPendingModel>();
Paginator pageNav = new Paginator();
pageNav.setItemsPerPage(pageSize > 0 ? pageSize : 10);
int count = settleFlowPendingMapper.countByExample(testExample);
if (count > 0) {
    pageNav.setItems(count);
    pageNav.setPage(page > 0 ? page : 1);
    //設置頁碼和每頁的數量,緊跟着的第一個select方法會被分頁
    PageHelper.startPage(pageNav.getPage(), pageSize);
    //該select會被分頁查詢
    List<SettleFlowPending> list = settleFlowPendingMapper.selectByExample(testExample);
    pageList.addAll(convert.convert2Model(list, SettleFlowPendingModel.class));
    pageList.setPaginator(pageNav);
}
相關文章
相關標籤/搜索