天天看點

Mybatis系列之分頁問題

背景

測試回報的一個問題,前端清單頁,點選第2頁,沒有響應。第一反應是去檢視Chrome F12 Console有沒有報錯。

回顧

事實上,之前遇到一個看起來類似的問題,點選第3頁,頁面變為空白。一臉懵逼,檢視Console才發現有JSON解析失敗的報錯,重新整理頁面,點選其他頁面都是正常的;隻有第3頁才會變為空白,控制台報錯資訊為:

Mybatis系列之分頁問題

這個【王】是什麼鬼。檢視接口響應結果:

Mybatis系列之分頁問題

有三個字段以【王】開頭。會想JSON解析報錯,再重點看看remark字段,才發現有JSON解析邏輯。

即remark字段要麼為null或空,要麼得是一個JSON資料。現在測試環境造的髒資料不是JSON,則報錯。

定位問題

扯遠,此次點第2頁,沒有響應,控制台沒有報錯,說明不是前端JS報錯。檢視接口responseBody,很快發現問題:

Mybatis系列之分頁問題

是後端分頁有問題。看代碼:

public String strategyList(JSONObject jsonObject) {
    PageHelper.startPage(Integer.parseInt(jsonObject.get("pageNo") + ""),
            Integer.parseInt(jsonObject.get("pageSize") + ""));
    list = channelPublicStrategyMapper.strategyList(jsonObject);
    PageInfo<Map> pageInfo = new PageInfo<>(list);
    return JSONObject.toJSONString(ServiceUtil.returnSuccessData(pageInfo));
}      

看不出任何問題。調試,入參​

​jsonObject.get("pageSize") == 10​

​​,前端傳參沒問題,但是最後傳回的​

​pageInfo​

​包裝資訊不對勁:

Mybatis系列之分頁問題

到此時還是一臉懵逼。。後來無意中點到源碼,才發現​

​PageHelper​

​​和​

​PageInfo​

​不是同一個依賴包的API:

Mybatis系列之分頁問題
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.9</version>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>2.1.0</version>
</dependency>