亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Mybatis-plus原生pages分頁未生效的解決方案

 更新時間:2024年07月11日 10:45:14   作者:ybb_ymm  
本文主要介紹了Mybatis-plus原生pages分頁未生效的解決方案,包含介紹了未生效的5種原因以及解決方法,具有一定的參考價值,感興趣的可以了解一下

前言

前端小伙伴今天問我們后端同學,說他寫得列表有問題,分頁數(shù)據(jù)沒有成功,將所有數(shù)據(jù)都返回給前端了!

后端同學有些懵逼的說,我已經(jīng)使用了service的pages接口來查詢的列表,為什么失敗了呢?

各位小伙伴,你們知道怎么解決這個問題嗎?先考慮一下。

在這里插入圖片描述

原因

1、Mybatis Plus版本的問題

當我們使用的是較舊的版本,可能存在分頁失效的問題。
解決辦法:升級到最新版本。

2、Mapper.xml文件中SQL語句格式問題

在Mapper.xml中書寫SQL語句時,當格式錯誤了,就會導致分頁失效。
正確的格式:在最后加上limit #{offset}, #{pageSize}
#{offset}:偏移量;
#{pageSize}:每頁顯示的數(shù)量。

3、Mybatis Plus默認分頁攔截器問題

默認情況下,Mybatis Plus自帶了一個分頁插件com.baomidou.mybatisplus.plugins.PaginationInterceptor。但是,有時候在進行復雜查詢時,這個分頁插件可能會失效,導致分頁查詢不到數(shù)據(jù)。

4、分頁參數(shù)傳參問題

如果使用的是分頁查詢方法,那么在調(diào)用方法時就要傳入Page對象,而且必須在此前調(diào)用setRecordsTotal方法設置總記錄數(shù)。如果不設置總記錄數(shù),則分頁插件無法工作。

5、分頁配置的問題

不同版本的mybatis-plus需要的分頁配置是不同的,是分水嶺版本為3.4.0

在它之后的版本開始將原有的PaginationInterceptor 標記為過時,需要換成MybatisPlusInterceptor

解決方案

上面我們列出了5個導致分頁結果失敗的原因,接下來我們看看如何解決呢?分別一一對應來看。

1、升級對應的Mybatis-plus版本

如果我們使用的舊版本的Mybatis-plus,則可以升級為新版的。
在pom文件里面更新

 <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.3</version>
</dependency>

2、分頁插件配置問題

這個可以按照上面所說的在Mapper.xml文件中調(diào)整

<select id="selectForPage" resultMap="BaseResultMap">
    select * from tb_user
    <where>
        1 = 1
    </where>
    limit #{offset}, #{pageSize}
</select>

配置Mybatis-plus分頁插件,可以在application.yml文件中加入如下配置:

mybatis-plus:
  configuration:
    # 分頁插件,一般不用修改
    page-params: pageNum=1;pageSize=10;count=countSql

3、自定義分頁攔截器

Mybatis-plus提供了自定義分頁攔截器的功能,可以根據(jù)我們自己的業(yè)務進行自定義。自定義分頁攔截器需要繼承com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor類,然后在實現(xiàn)intercept方法,在該方法中來處理我們具體的分頁邏輯。
例如:可以根據(jù)前端傳入的分頁參數(shù)進行分頁,而不是使用默認的分頁參數(shù)。具體代碼示例如下:

public class CustomPaginationInterceptor extends PaginationInterceptor {

    @Override
    public Page SqlParserInterceptor(MappedStatement ms, Page page) {
        // 獲取前端傳入的分頁參數(shù)
        Integer pageNum = (Integer) page.get("pageNo");
        Integer pageSize = (Integer) page.get("pageSize");
        // 處理分頁邏輯
        int offset = (pageNum - 1) * pageSize;
        return super.SqlParserInterceptor(ms, new Page(offset, pageSize));
    }
}

4、正確的參數(shù)

假如在調(diào)用分頁查詢方法的時候沒有傳入Page對象或者是沒有調(diào)用setRecordsTotal方法設置總條數(shù),則分頁查詢不到數(shù)據(jù)。可以采用以下方式正確傳參,具體代碼如下:

// 分頁查詢方法
IPage<Test> pageTest = new Page<>(pageNo, pageSize);
// 設置總記錄數(shù)
pageTest .setRecordsTotal(testMapper.selectCount(null));
// 查詢
IPage<Test> pageResult = testMapper.selectPage(pageTest , null);

5、不同版本的配置文件

接下來我們看看不同版本的配置文件具體如何實現(xiàn)

3.4.0之前版本

在啟動類中添加Bean,配置類代碼如下:

    /** Mybatis plus 分頁插件 **/
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
        // 設置請求的頁面大于最大頁后操作, true調(diào)回到首頁,false 繼續(xù)請求  默認false
        // paginationInterceptor.setOverflow(false);
        // 設置最大單頁限制數(shù)量,默認 500 條,-1 不受限制
         paginationInterceptor.setLimit(-1);
        return paginationInterceptor;
    }

3.4.0之后版本

配置類代碼如下

package com.cafeteria.reservation.admin.config;

import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MyBatisConfig {
    @Bean
    public MybatisPlusInterceptor paginationInterceptor() {
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
//這是分頁攔截器
        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();

        paginationInnerInterceptor.setOverflow(false);
        paginationInnerInterceptor.setMaxLimit(500L);
        mybatisPlusInterceptor.addInnerInterceptor(paginationInnerInterceptor);
//設置請求的頁面大于最大頁后操作,true調(diào)回到首頁,false繼續(xù)請求默認false
// paginationInterceptor.setOverflow(false);//設置最大單頁限制數(shù)量,默認500條,-1不受限制
//paginationInterceptor.setLimit(500);
//開啟 count 的 join 優(yōu)化,只針對部分 left join
        return mybatisPlusInterceptor;
    }
}

完結

到此這篇關于Mybatis-plus原生pages分頁未生效的解決方案的文章就介紹到這了,更多相關Mybatis-plus原生pages分頁未生效內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java中對null進行強制類型轉換的方法

    Java中對null進行強制類型轉換的方法

    小編對null進行強轉會不會拋錯,非常的好奇,下面小編通過實例代碼給大家介紹Java中對null進行強制類型轉換的方法,感興趣的朋友參考下吧
    2018-09-09
  • Java中Elasticsearch 實現(xiàn)分頁方式(三種方式)

    Java中Elasticsearch 實現(xiàn)分頁方式(三種方式)

    Elasticsearch是用Java語言開發(fā)的,并作為Apache許可條款下的開放源碼發(fā)布,是一種流行的企業(yè)級搜索引擎,這篇文章主要介紹了Elasticsearch實現(xiàn)分頁的3種方式,需要的朋友可以參考下
    2022-07-07
  • 在Spring中編寫事務的介紹

    在Spring中編寫事務的介紹

    今天小編就為大家分享一篇關于在Spring中編寫事務的介紹,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Opencv創(chuàng)建車牌圖片識別系統(tǒng)方法詳解

    Opencv創(chuàng)建車牌圖片識別系統(tǒng)方法詳解

    本文主要介紹了一個基于spring?boot+maven+opencv實現(xiàn)的圖像識別及訓練項目,可以實現(xiàn)車牌識別功能,感興趣的可以跟隨小編一起試一試
    2022-01-01
  • win7 64位系統(tǒng)JDK安裝配置環(huán)境變量教程

    win7 64位系統(tǒng)JDK安裝配置環(huán)境變量教程

    這篇文章主要為大家詳細介紹了win7 64位系統(tǒng)JDK安裝配置環(huán)境變量教程,感興趣的小伙伴們可以參考一下
    2016-06-06
  • SpringBoot Controller Post接口單元測試示例

    SpringBoot Controller Post接口單元測試示例

    今天小編就為大家分享一篇關于SpringBoot Controller Post接口單元測試示例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • Java如何通過Maven管理項目依賴

    Java如何通過Maven管理項目依賴

    這篇文章主要介紹了Java如何通過Maven管理項目依賴,幫助大家更好的理解和使用maven,感興趣的朋友可以了解下
    2020-10-10
  • java使用Memcached簡單教程

    java使用Memcached簡單教程

    本文主要記錄Memcached的一些基本使用和簡單的Monitor,大家參考使用吧
    2013-12-12
  • JavaScript中的isTrusted屬性及其應用場景詳解

    JavaScript中的isTrusted屬性及其應用場景詳解

    在現(xiàn)代 Web 開發(fā)中,JavaScript 是構建交互式應用的核心語言,隨著前端技術的不斷發(fā)展,開發(fā)者需要處理越來越多的復雜場景,例如事件處理、數(shù)據(jù)傳遞和狀態(tài)管理等,本文將通過一個實際案例,深入探討 isTrusted 屬性的來源、作用,需要的朋友可以參考下
    2025-01-01
  • Java.lang.NullPointerException的錯誤解決

    Java.lang.NullPointerException的錯誤解決

    Java中NullPointerException是一種常見的運行時異常,通常發(fā)生在嘗試調(diào)用null對象的方法或訪問其屬性時,具有一定的參考價值,感興趣的可以了解一下
    2024-09-09

最新評論