java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > MyBatis-Plus Page 分页不生效

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

作者:面壁者-扬

分页是常见的一种功能,本文主要介绍了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 分页不生效内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

您可能感兴趣的文章:
阅读全文