1. 程式人生 > 程式設計 >解決mybatis plus 分頁查詢有條數,total和pages都是零的問題

解決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

解決mybatis plus 分頁查詢有條數,total和pages都是零的問題

二. 解決

查閱官方文件發現,缺少了分頁外掛的配置,在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 分頁外掛攔截的程式碼執行(分頁程式碼早一點執行,才有機會將分頁引數也作為是否取快取的依據)

附圖:

解決mybatis plus 分頁查詢有條數,total和pages都是零的問題

解決mybatis plus 分頁查詢有條數,total和pages都是零的問題

四、解決辦法

在 DAO.xml 對應的 select 標籤裡,增加屬性 flushCache="true"​

以上這篇解決mybatis plus 分頁查詢有條數,total和pages都是零的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。