PageHelper和PageInfo 分頁total數據錯誤

在Springboot項目中使用PageHelper和PageInfo處理查詢分頁的問題,發現查詢返回結果中分頁數據不對。java

每次顯示的數據都是返回list中的信息,包括total,size等等, 和數據庫的記錄數沒有關係。sql

在源碼中發現, PageHelper是動態代理mybatis的底層,拼接sql,而不是在java層處理。實際上PageHelper在一次查詢中執行了兩條sql,一是處理用戶請求中的sql並拼接Limit,二是查詢符合要求的全部記錄總數,計算分頁信息。數據庫

代碼的錯誤也就出如今這裏,我在PageHelper.startPage() 後沒有直接調用mapper層執行sql語句。而是調用了service方法,全部在最後的查詢結果中顯示的分頁信息都是當前list的信息,PageHelper沒法執行第二條查詢全部記錄數,處理分頁信息。mybatis

直接看代碼app

@Overrideide

public ResultDTO listArticlesByParentCode(Integer pageIndex, Integer pageSize,String parentCode) {.net

if (!parentingArticlesService.isValid(parentCode)){代理

return ResultDTO.success();get

}源碼

PageHelper.startPage(pageIndex, pageSize);

ParentingArticles query = new ParentingArticles();

query.setParentCode(parentCode);

query.setStatus(Status.VALID.getCode());

// 調用service後,PageHelper沒法執行第二條查詢記錄總數的sql,致使分頁數據不正確

//        List<ParentingArticles> currentTimeValidArticles = parentingArticlesService.getCurrentTimeValidArticles(query);

// 直接調用mapper,執行sql

List<ParentingArticles> currentTimeValidArticles = parentingArticlesMapper.listArticlesByParentCode(query);

PageInfo<ParentingArticles> pageInfo = new PageInfo<>(currentTimeValidArticles)

return ResultDTO.success(pageInfo);

}

相關文章
相關標籤/搜索