Pagehelper 不分頁幾種情況的解決方法
阿新 • • 發佈:2018-12-14
第一種情況: mybatis 引入版本不對
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>
請不要使用1.0.0版本,因為還不支援攔截器外掛,可用1.0.0之後的版本
第二種情況:pagehelper 引入不對,正確的應該引入:
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
第三種情況:設定資料的方法寫在分頁前面(程式碼順序不對)
Page<Object> page = PageHelper.startPage(pageNo, pageSize, true); result.setList(hotWordService.getHotWordsIndustryList());
第四種情況:設定資料裡的mapper的多次查詢,Page只會以第一次查出的結果來分頁:(貌似不對,但確定能分頁了,搞不懂)
Page<Object> page = PageHelper.startPage(pageNo, pageSize, true); result.setList(hotWordService.getHotWordsIndustryList()); getHotWordsIndustryList()方法: @Override public List<CallRecordSimpleVO> getCompletedCallRecordByCallTaskId(CallTaskSimpleVO callTaskSimpleVO) { Long userId = callTaskMapper.getUserIdById(callTaskSimpleVO.getCallTaskId()); if (userId == null || !Objects.equals(userId, ThreadCacheMgr.getUserId())) { throw new CallTaskException(CallTaskExceptionCode.CALL_TASK_NOT_AUTHORITY); } return callRecordMapper.getCallRecordByCallTaskId(callTaskSimpleVO); }
方法裡有callTaskMapper和callRecordMapper的查詢,分頁針對第一個mapper的查詢來分,所以分頁資料是 callTaskMapper.getUserIdById 的查詢結果。應該改成:
Long userId = callTaskMapper.getUserIdById(callTaskSimpleVO.getCallTaskId());
if (userId == null || !Objects.equals(userId, ThreadCacheMgr.getUserId())) {
throw new CallTaskException(CallTaskExceptionCode.CALL_TASK_NOT_AUTHORITY);
}
Page<Object> page = PageHelper.startPage(pageNo, pageSize, true);
result.setList(hotWordService.getHotWordsIndustryList());
getHotWordsIndustryList()方法:
@Override
public List<CallRecordSimpleVO> getCompletedCallRecordByCallTaskId(CallTaskSimpleVO callTaskSimpleVO) {
return callRecordMapper.getCallRecordByCallTaskId(callTaskSimpleVO);
}