MyBatis-Plus Page 分页不生效的问题解决

 更新时间:2024年07月11日 10:33:22   作者:面壁者-扬  
分页是常见的一种功能,本文主要介绍了MyBatis-Plus Page分页不生效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1、可能原因

1)版本过低

2)需要增加 MybatisPlusInterceptor 配置

2、处理

1)引包,使用3.4.0 版本

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

2)配置, 根据使用的数据库类型可自行更改DbType

@Configuration
public class MyBatisPlusConfig {

    /**
     * 插件配置
     *
     * @return
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();

        // 向MyBatis-Plus的过滤器链中添加分页拦截器,需要设置数据库类型(主要用于分页方言)
        // pg使用
        //interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.POSTGRE_SQL));
        // mysql使用
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        // 添加乐观锁拦截器
        interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
        return interceptor;
    }
}

补:其他原因

1、分页插件未配置:

确保你已经在 MyBatis-Plus 的配置中添加了分页插件。如果你使用的是 Spring Boot,通常是在 MybatisPlusConfig 类中添加分页插件的 Bean。

@Bean  
public PaginationInterceptor paginationInterceptor() {  
    return new PaginationInterceptor();  
}

SQL 映射文件或 Mapper 接口中的方法问题:
如果你在 XML 映射文件中写了自定义的 SQL,确保你没有手动写 LIMIT 和 OFFSET。分页插件会自动为你处理这些。

这里还特别需要注意一下3.4版本里可能上面的配置方式不生效,可以尝试下面的配置方式

@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
    MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
    interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
    return interceptor;
}

2、调用方法时未正确设置 Page 对象:

在调用分页方法之前,你需要创建一个 Page 对象并设置当前页和每页显示的记录数。

Page<User> page = new Page<>(1, 10); // 第一页,每页10条记录  
IPage<User> userPage = userMapper.selectPage(page, null); // 假设没有查询条件  
List<User> userList = userPage.getRecords(); // 获取分页结果

3、版本冲突或配置问题:

确保你使用的 MyBatis-Plus 版本与其他依赖库没有冲突,并且你的项目配置是正确的。

4、检查数据库和表:

确保你的数据库和表支持分页查询(例如,MySQL 支持 LIMIT 和 OFFSET)。

查看日志:
开启 MyBatis 的日志功能,查看生成的 SQL 语句是否包含了 LIMIT 和 OFFSET。这可以帮助你确认分页插件是否已被正确调用。

事务管理:
如果你在使用事务,确保分页查询是在事务的上下文中正确执行的。

5、其他插件或拦截器冲突:

如果你的项目中使用了其他 MyBatis 插件或拦截器,确保它们之间没有冲突。

到此这篇关于MyBatis-Plus Page 分页不生效的问题解决的文章就介绍到这了,更多相关MyBatis-Plus Page 分页不生效内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • Spring @Scheduled的坑及解决

    Spring @Scheduled的坑及解决

    这篇文章主要介绍了Spring @Scheduled的坑及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • Java数据结构中的HashMap和HashSet详解

    Java数据结构中的HashMap和HashSet详解

    HashMap和HashSet都是存储在哈希桶之中,通过本文我们可以先了解一些哈希桶是什么,本文结合实例代码给大家介绍的非常详细,需要的朋友参考下吧
    2023-10-10
  • 详解java中finalize的实现与相应的执行过程

    详解java中finalize的实现与相应的执行过程

    在常规的java书籍中,即会描述 object的finalize方法是用于一些特殊的对象在回收之前再做一些扫尾的工作,但是并没有说明此是如何实现的.本篇从java的角度(不涉及jvm以及c++),有需要的朋友们可以参考借鉴。
    2016-09-09
  • Spring boot @ModelAttribute标注的实现

    Spring boot @ModelAttribute标注的实现

    这篇文章主要介绍了Spring boot @ModelAttribute标注的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • 在idea中设置项目编码格式为UTF-8的操作方法

    在idea中设置项目编码格式为UTF-8的操作方法

    idea中的默认编码为GBK,在开发过程中一般将编码格式改为UTF-8,所以本文给大家介绍了在idea中设置项目编码为UTF-8的操作方法,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • java根据网络地址保存图片的方法

    java根据网络地址保存图片的方法

    这篇文章主要为大家详细介绍了java根据网络地址保存图片的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • java向上转型发生的时机知识点详解

    java向上转型发生的时机知识点详解

    在本篇文章里小编给大家整理分享的是关于java向上转型发生的时机知识点内容,有兴趣的读者们可以参考下。
    2021-05-05
  • JAVA 中的大数字操作类详解

    JAVA 中的大数字操作类详解

    Java的BigInteger类用于处理超出int和long范围的大整数,而BigDecimal类则用于高精度的浮点数运算,这两个类都是Number的子类,提供了一系列方法执行加减乘除等运算,BigInteger不支持表示小数,只能表示整数,BigDecimal可以控制小数位数和舍入方式,感兴趣的朋友一起看看吧
    2024-10-10
  • redisson分布式限流RRateLimiter源码解析

    redisson分布式限流RRateLimiter源码解析

    这篇文章主要为大家介绍了redisson分布式限流RRateLimiter源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • 若依框架多数据源切换方式

    若依框架多数据源切换方式

    这篇文章主要介绍了若依框架多数据源切换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01

最新评论