1. 程式人生 > >Pagehelper 不分頁幾種情況的解決方法

Pagehelper 不分頁幾種情況的解決方法

第一種情況: 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);
    }