問題
查詢的每頁數量與實際返回的不一致
問題描述
後端接口代碼:
try {
Integer user_id = (Integer)request.getAttribute("id");
PageHelper.startPage(page, size);
GuardListFilter guardListFilter = new GuardListFilter();
guardListFilter.setFile_type(file_type);
if(file_type.equals(person_audio)){
guardListFilter.setProvider_id(user_id);
}
List<GuardListDTO> guardList = safety_serviceDao.listByFilter(guardListFilter);
PageInfo<GuardListDTO> pageInfo = new PageInfo<GuardListDTO>(guardList);
return JsonR.createSuccess(pageInfo);
} catch (Exception e){
return JsonR.createFail(e.getMessage());
}
如下所示,調用接口返回第一頁的信息,每頁3條。
實際返回,只返回了一頁,其中包含了7條數據(數據庫中全部的數據)。
問題本質
原因(1)PageHelper只對緊跟着的第一個SQL語句起作用
原因(2)Spring Boot導入PageHelper與Spring不一致
問題解決
修改pom.xml文件,調整導包的代碼
原來的是:
<!-- 分頁 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.2</version>
</dependency>
修改後的依賴導入代碼:
在這裏插入代碼片
修改後端接口代碼,調整調用PageHelper的位置
try {
Integer user_id = (Integer)request.getAttribute("id");
GuardListFilter guardListFilter = new GuardListFilter();
guardListFilter.setFile_type(file_type);
if(file_type.equals(person_audio)){
guardListFilter.setProvider_id(user_id);
}
PageHelper.startPage(page, size);
List<GuardListDTO> guardList = safety_serviceDao.listByFilter(guardListFilter);
PageInfo<GuardListDTO> pageInfo = new PageInfo<GuardListDTO>(guardList);
return JsonR.createSuccess(pageInfo);
} catch (Exception e){
return JsonR.createFail(e.getMessage());
}
postMan調用結果
"pageNum": 1, //當前頁
"pageSize": 3, //每頁的元素數量
"size": 3, //當前頁的元素數量
"startRow": 1, //當前頁面第一個元素在數據庫中的行號
"endRow": 3, //當前頁面最後一個元素在數據庫中的行號
"pages": 2, //總頁數
"prePage": 0, //上一頁
"nextPage": 2, //下一頁
"isFirstPage": true, //是否是第一頁
"isLastPage": false, //是否是最後一頁
"hasPreviousPage": false, //是否有前一頁
"hasNextPage": true, //是否有後一頁
"navigatePages": 8, //導航頁碼數
//所有的導航頁號
"navigatepageNums": [
1,
2
],
//導航條上的第一頁與最後一頁
"navigateFirstPage": 1,
"navigateLastPage": 2,
"firstPage": 1,
"lastPage": 2
問題得到了解決