返回

Mybatis-Plus分页出Bug?原来是这里没注意!

后端

Mybatis-Plus 分页中的 Total=0 问题详解

在使用 Mybatis-Plus 进行分页时,您可能会遇到 total=0 的情况,这会阻止您获取分页数据的正确总数。本博客将深入探讨导致这一问题的常见原因并提供解决方法,帮助您掌握 Mybatis-Plus 分页的精髓。

导致 Total=0 的原因

1. 缺少总记录数查询

Mybatis-Plus 依靠总记录数查询来确定分页的总页数和总记录数。如果您的查询中没有包含总记录数查询,分页插件将无法计算出正确的 total 值。

2. 分页插件配置错误

分页插件的配置需要与您使用的数据库方言相匹配。如果配置不正确,可能会导致 total 为 0,因为分页插件无法正确拦截和处理分页请求。

解决方法

1. 添加总记录数查询

在您的查询中添加总记录数查询。例如,如果您正在查询 table_name 表,则总记录数查询可以是 select count(*) from table_name

2. 检查分页插件配置

确保分页插件的配置与您使用的数据库方言相匹配。您可以在 MyBatis 配置文件中找到此配置,如下所示:

<plugins>
    <plugin interceptor="com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor" />
</plugins>

对于不同的数据库方言,需要将 dialectType 属性设置为相应的值,例如 oraclemysql 等。

SpringBoot 中的 Total=0 问题

如果您在使用 SpringBoot 和 Mybatis-Plus 进行分页时遇到 total=0 的问题,可能是因为分页插件未正确配置。

解决方法

在 SpringBoot 项目中,您需要在配置文件中配置分页插件,如下所示:

@Configuration
public class MyBatisPlusConfig {

    @Bean
    public PaginationInterceptor paginationInterceptor() {
        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
        // 设置请求的页面大于最大页后操作, true 调到首页,false 继续请求 默认false
        paginationInterceptor.setOverflow(false);
        // 设置最大单页限制数量,默认 500 条,-1 不受限制
        paginationInterceptor.setLimit(1000);
        return paginationInterceptor;
    }
}

常见问题

1. 为什么分页时会出现 Total=0 的情况?

可能是因为查询中没有包含总记录数查询,或者分页插件配置不正确。

2. 如何解决 Total=0 的问题?

添加总记录数查询,并检查分页插件的配置是否正确。

3. 如何在 SpringBoot 中解决 Total=0 的问题?

在 SpringBoot 项目中,需要在配置文件中配置分页插件。

4. 分页插件需要和数据库方言匹配吗?

是的,分页插件的配置需要与您使用的数据库方言相匹配。

5. 在使用 Mybatis-Plus 进行分页时,还需要注意哪些问题?

确保分页插件的版本与 MyBatis 的版本兼容。