SpringBoot2.0系列教程(七)Springboot框架添加PageHelper分頁查詢功能


Hello大家好,本章我們添加PageHelper分頁查詢功能。另求各路大神指點,感謝

一:什么是PageHelper

PageHelper是一款好用的開源免費的Mybatis第三方物理分頁插件

物理分頁

支持常見的 12 種數據庫。Oracle,MySql,MariaDB,SQLite,DB2,PostgreSQL,SqlServer 等

支持多種分頁方式

支持常見的RowBounds(PageRowBounds),PageHelper.startPage 方法調用,Mapper 接口參數調用

二:添加PageHelper依賴

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

然后鼠標右鍵選擇Maven→Reimport進行依賴下載

三:添加PageHelper配置

application.properties中添加

logging.level.com.example.demo.dao=DEBUG
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
pagehelper.page-size-zero=true

四:使用方法

UserInfoMapper.xml

<select id="selectAll" resultMap="BaseResultMap">
    select
    <include refid="Base_Column_List"/>
    from user_info
</select>

UserInfoMapper

List<UserInfo> selectAll();

UserInfoService

PageInfo<UserInfo> selectAll(Integer page,Integer size);

UserInfoServiceImpl

@Override
public PageInfo<UserInfo> selectAll(Integer page, Integer size) {
    //開啟分頁查詢,寫在查詢語句上方
    //只有緊跟在PageHelper.startPage方法后的第一個Mybatis的查詢(Select)方法會被分頁。
    PageHelper.startPage(page, size);
    List<UserInfo> userInfoList = userInfoMapper.selectAll();
    PageInfo<UserInfo> pageInfo = new PageInfo<>(userInfoList);
    return pageInfo;
}

UserInfoController

@ApiOperation(value = "查詢用戶", notes = "分頁查詢用戶所有")
@ApiImplicitParams({
        @ApiImplicitParam(name = "page", value = "當前頁碼",
                dataType = "Integer", paramType = "query"),
        @ApiImplicitParam(name = "size", value = "每頁顯示條數",
                dataType = "Integer", paramType = "query")
})
@PostMapping("/selectAll")
public RetResult<PageInfo<UserInfo>> selectAll(@RequestParam(defaultValue = "0") Integer page,
                                      @RequestParam(defaultValue = "0") Integer size) {
    PageInfo<UserInfo> pageInfo = userInfoService.selectAll(page, size);
    return RetResponse.makeOKRsp(pageInfo);
}

五:PageHelper中默認PageInfo的成員變量介紹

//當前頁
private int pageNum;
//每頁的數量
private int pageSize;
//當前頁的數量
private int size;
//當前頁面第一個元素在數據庫中的行號
private int startRow;
//當前頁面最后一個元素在數據庫中的行號
private int endRow;
//總記錄數
private long total;
//總頁數
private int pages;
//結果集
private List<T> list;
//第一頁
private int firstPage;
//前一頁
private int prePage;
//是否為第一頁
private boolean isFirstPage;
//是否為最后一頁
private boolean isLastPage;
//是否有前一頁
private boolean hasPreviousPage;
//是否有下一頁
private boolean hasNextPage;
//導航頁碼數
private int navigatePages;
//所有導航頁號
private int[] navigatepageNums; 

六:功能測試

地址:http://192.168.1.104:8080/userInfo/selectAll

情況一:不傳參數,默認為全查詢

{
    "code": 200,
    "data": {
        "endRow": 2,
        "firstPage": 0,
        "hasNextPage": false,
        "hasPreviousPage": false,
        "isFirstPage": false,
        "isLastPage": true,
        "lastPage": 0,
        "list": [
            {
                "id": 1,
                "userName": "Mr_初晨"
            },
            {
                "id": 2,
                "userName": "Mr_初晨"
            }
        ],
        "navigateFirstPage": 0,
        "navigateLastPage": 0,
        "navigatePages": 8,
        "navigatepageNums": [],
        "nextPage": 0,
        "orderBy": "",
        "pageNum": 0,
        "pageSize": 0,
        "pages": 0,
        "prePage": 0,
        "size": 2,
        "startRow": 1,
        "total": 2
    },
    "msg": "success"
}

情況二:參數 page=2&size=1

{
    "code": 200,
    "data": {
        "endRow": 2,
        "firstPage": 1,
        "hasNextPage": false,
        "hasPreviousPage": true,
        "isFirstPage": false,
        "isLastPage": true,
        "lastPage": 2,
        "list": [
            {
                "id": 2,
                "userName": "Mr_初晨"
            }
        ],
        "navigateFirstPage": 1,
        "navigateLastPage": 2,
        "navigatePages": 8,
        "navigatepageNums": [
            1,
            2
        ],
        "nextPage": 0,
        "orderBy": "",
        "pageNum": 2,
        "pageSize": 1,
        "pages": 2,
        "prePage": 1,
        "size": 1,
        "startRow": 2,
        "total": 2
    },
    "msg": "success"
}

項目地址

碼雲地址: https://gitee.com/beany/mySpringBoot

GitHub地址: https://github.com/MyBeany/mySpringBoot

寫文章不易,如對您有幫助,請幫忙點下star

結尾

添加PageHelper分頁查詢功能已完成,后續功能接下來陸續更新,另求各路大神指點,感謝大家。


免責聲明!

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



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