解決mybatis plus 分頁查詢有條數,total和pages都是零的問題
一. 問題還原
1. Controller程式碼部分
Page<FixedAssetsEntity> pageForPlus = getPage();
Page<FixedAssetsEntity> fixedAssetsEntityPage = fixedAssetsService.selectPage(pageForPlus);
2.spring-mybatis.xml中的sqlSessionFactory配置
<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean"> <!-- 配置資料來源 --> <property name="dataSource" ref="dataSource" /> <!-- 自動掃描 Xml 檔案位置 --> <property name="mapperLocations" value="classpath*:mapping/**/*.xml" /> <!-- 配置 Mybatis 配置檔案(可無) --> <property name="configLocation" value="classpath:mybatis-config.xml" /> <!-- 配置包別名,支援萬用字元 * 或者 ; 分割 --> <property name="typeAliasesPackage" value="com.syb.dto,com.syb.sys.entity" /> <!-- 列舉屬性配置掃描,支援萬用字元 * 或者 ; 分割 --> <!-- <property name="typeEnumsPackage" value="com.baomidou.springmvc.entity.*.enums"/> --> <!-- 以上配置和傳統 Mybatis 一致 --> <!-- MP 全域性配置注入 --> <property name="globalConfig" ref="globalConfig" /> </bean>
打斷點檢視fixedAssetsEntityPage,records條目正確,但是total和pages都是0
二. 解決
查閱官方文件發現,缺少了分頁外掛的配置,在sqlSessionFactory中新增分頁外掛,新增後為
<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean"> <!-- 配置資料來源 --> <property name="dataSource" ref="dataSource" /> <!-- 自動掃描 Xml 檔案位置 --> <property name="mapperLocations" value="classpath*:mapping/**/*.xml" /> <!-- 配置 Mybatis 配置檔案(可無) --> <property name="configLocation" value="classpath:mybatis-config.xml" /> <!-- 配置包別名,支援萬用字元 * 或者 ; 分割 --> <property name="typeAliasesPackage" value="com.syb.dto,com.syb.sys.entity" /> <!-- 列舉屬性配置掃描,支援萬用字元 * 或者 ; 分割 --> <!-- <property name="typeEnumsPackage" value="com.baomidou.springmvc.entity.*.enums"/> --> <!-- 以上配置和傳統 Mybatis 一致 --> <!-- MP 全域性配置注入 --> <property name="plugins"> <array> <!-- 分頁外掛配置 --> <bean id="paginationInterceptor" class="com.baomidou.mybatisplus.plugins.PaginationInterceptor"> <property name="dialectType" value="mysql" /> </bean> </array> </property> <property name="globalConfig" ref="globalConfig" /> </bean>
執行程式,打斷點檢視,total和page已經正常顯示
補充知識:mybatisPlus分頁查詢多次查到相同資料的問題
一、問題描述
使用 mybatisPlus 3.1.0,在同一個方法內,多次呼叫同一個方法進行分頁查詢,每次查詢的分頁頁碼遞增,結果每次查到的資料都一樣。
二、相關知識:mybatis 一級快取
mybatis存在快取機制,查詢到的資料會納入快取,同一sqlSession共享的叫一級快取。預設情況下,mybatis會使用一級快取
會取一級快取的條件:
1、同一個 sqlSession
2、同一個 Mapper 方法
3、引數沒有發生變化
三、問題原因
mybatis 判斷是否需要使用一級快取的程式碼,早於 mybatisPlus 分頁外掛攔截的程式碼執行(分頁程式碼早一點執行,才有機會將分頁引數也作為是否取快取的依據)
附圖:
四、解決辦法
在 DAO.xml 對應的 select 標籤裡,增加屬性 flushCache="true"
以上這篇解決mybatis plus 分頁查詢有條數,total和pages都是零的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。