mybatis插件分頁PageHelper

1.引入jar包

com.github.pagehelper:pagehelper:4.1.0

2.mybatis-config.xml配置文件添加以下代碼

<plugins>
    <plugin interceptor="com.github.pagehelper.PageHelper">
        <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="true"/>
        <!-- 3.3.0版本可用 - 分頁參數合理化,默認false禁用 -->
        <!-- 啓用合理化時,如果pageNum<1會查詢第一頁,如果pageNum>pages會查詢最後一頁 -->
        <!-- 禁用合理化時,如果pageNum<1或pageNum>pages會返回空數據 -->
        <property name="reasonable" value="false"/>
        <!-- 3.5.0版本可用 - 爲了支持startPage(Object params)方法 -->
        <!-- 增加了一個`params`參數來配置參數映射,用於從Map或ServletRequest中取值 -->
        <!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,orderBy,不配置映射的用默認值 -->
        <!-- 不理解該含義的前提下,不要隨便複製該配置 -->
        <property name="params" value="pageNum=pageHelperStart;pageSize=pageHelperRows;"/>
        <!-- 支持通過Mapper接口參數來傳遞分頁參數 -->
        <property name="supportMethodsArguments" value="false"/>
        <!-- always總是返回PageInfo類型,check檢查返回類型是否爲PageInfo,none返回Page -->
        <property name="returnPageInfo" value="none"/>
    </plugin>
</plugins>

3.執行查詢sql前設定分頁參數

PageHelper.startPage(userParam.getPageNum(), userParam.getPageSize(), true);
例如:

public PageInfos getUserList(UserParam userParam){
    PageHelper.startPage(userParam.getPageNum(), userParam.getPageSize(), true);
    Page<UserPojo> userPojos = userReadMapper.getUserList(userParam);
    PageInfo<UserPojo> data = new PageInfo<>(userPojos);
    return UtilTools.pageChange(data,userPojos);
}

PageInfo類中屬性字段太多,對其進行簡化

public static PageInfos pageChange(PageInfo<?> data, Page page) {
    if (data == null) {
        return null;
    }
    PageInfos pageInfos = new PageInfos();
    try {
        pageInfos.setPageNo(data.getPageNum());
        pageInfos.setPageSize(data.getPageSize());
        pageInfos.setTotalCount(data.getTotal());
        pageInfos.setPageCount(data.getPages());
        pageInfos.setData(data.getList());
    } catch (Exception e) {
    }
    return pageInfos;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章