Hello大家好,本章我們新增PageHelper分頁查詢功能。有問題可以聯絡我mr_beany@163.com。另求各路大神指點,感謝
一:什麼是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"
}複製程式碼
專案地址
碼雲地址: gitee.com/beany/mySpr…
GitHub地址: github.com/MyBeany/myS…
寫文章不易,如對您有幫助,請幫忙點下star
結尾
新增PageHelper分頁查詢功能已完成,後續功能接下來陸續更新,有問題可以聯絡我mr_beany@163.com。另求各路大神指點,感謝大家。