MyBatis中PageHelper不生效的解決方案
MyBatis中PageHelper不生效
今天使用pageHelper,發(fā)現(xiàn)設(shè)置了PageHelper.startPage(page, pageSize);pageSize設(shè)置為10,但是結(jié)果并沒有分頁,查處了全部的數(shù)據(jù);
問題解決:
原因是mybatis的依賴版本問題,之前配置的是1.0.0版本,這個(gè)版本不支持分頁攔截
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.0.0</version> </dependency>
所以修改成1.1.1版本解決問題
<!-- mybatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.1.1</version> </dependency> <!-- 分頁插件 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.1.6</version> </dependency>
MyBatis PageHelper手動(dòng)設(shè)置pages屬性不生效
環(huán)境: springboot+mybatis, 其中使用了pagehelp插件
依賴如下:
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
<exclusions>
<exclusion>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</exclusion>
</exclusions>
</dependency>
問題描述:
手動(dòng)構(gòu)建Page對(duì)象, 設(shè)置的pages屬性不生效, 例如設(shè)置值為3, 獲取的時(shí)候依然是0;
原因:
構(gòu)造的Page對(duì)象沒有設(shè)置pageSize屬性. 調(diào)用page對(duì)象的setTotal()方法時(shí), 該方法內(nèi)部根據(jù)pageSize屬性重置了pages屬性的值.
Page對(duì)象的setTotal方法源碼如下:
public void setTotal(long total) {
this.total = total;
if (total == -1) {
pages = 1;
return;
}
// 如果pageSize<=0, 則直接設(shè)置pages=0; pageSize默認(rèn)為0
if (pageSize > 0) {
pages = (int) (total / pageSize + ((total % pageSize == 0) ? 0 : 1));
} else {
pages = 0;
}
//分頁合理化,針對(duì)不合理的頁碼自動(dòng)處理
if ((reasonable != null && reasonable) && pageNum > pages) {
pageNum = pages;
calculateStartAndEndRow();
}
}
手動(dòng)構(gòu)造Page對(duì)象代碼如下:
// 返回值page對(duì)象 Page<StudyRecordVo> pageResult = new Page<>(); // 不設(shè)置pageSize,setPages方法調(diào)用無效, setTotal方法覆蓋了pageResult的pages屬性 // 解決方案: 1. 設(shè)置pageSize屬性在調(diào)用setTotal方法之前; 2. setTotal方法調(diào)用之后在設(shè)置pages屬性 pageResult.setPageSize(pageDto.getPageSize()); pageResult.setPages(totalPages); pageResult.setTotal(totalElements); pageResult.addAll(studyRecordVoList);
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java8中的List<String>轉(zhuǎn)List<Integer>的實(shí)例代碼
這篇文章主要介紹了java8中的List<String>轉(zhuǎn)List<Integer>,轉(zhuǎn)換list列表String到列表Intger,java8提供了stream很好的進(jìn)行操作,本文通過示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07
深入學(xué)習(xí)Hibernate持久化對(duì)象的三個(gè)狀態(tài)
Hibernate中的對(duì)象有3中狀態(tài),瞬時(shí)對(duì)象(TransientObjects)、持久化對(duì)象(PersistentObjects)和離線對(duì)象(DetachedObjects也叫做脫管對(duì)象),下面通過本文給大家分享Hibernate持久化對(duì)象的三個(gè)狀態(tài),一起看看吧2017-09-09
Java集合中獲取數(shù)據(jù)前驅(qū)和后繼元素的實(shí)現(xiàn)
使用一致性hash時(shí),如何找到一個(gè)hash值對(duì)應(yīng)的臨近節(jié)點(diǎn),可以使用集合中獲取數(shù)據(jù)的前驅(qū)和后繼元素實(shí)現(xiàn),所以本文給大家介紹了Java集合中獲取數(shù)據(jù)前驅(qū)和后繼元素的實(shí)現(xiàn),文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下2024-05-05
基于springboot實(shí)現(xiàn)整合shiro實(shí)現(xiàn)登錄認(rèn)證以及授權(quán)過程解析
這篇文章主要介紹了基于springboot實(shí)現(xiàn)整合shiro實(shí)現(xiàn)登錄認(rèn)證以及授權(quán)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12

