MybatisPlus - QueryMapper分页查询出来total=0

通过QueryMapper.selectPage,查询的时候,发现Records是正常的,但是total为0,未能正常分页、是因为、SpirngBoot没有读取到PaginationInnerInterceptor这个Bean
解决办法:
新建一个MybatisPlasConfig

@EnableTransactionManagement
@Configuration
public class MybatisPlusConfig {
    public PaginationInnerInterceptor paginationInterceptor() {
        PaginationInnerInterceptor paginationInterceptor = new PaginationInnerInterceptor();
        return paginationInterceptor;
    	}
    }

到这里问可能已经解决了,但是既然都写到这里了,可以的多加一些东西,比如,设置下最大Limit,配置下拦截器的数据库

	paginationInterceptor.setMaxLimit(-1L);
	paginationInterceptor.setDbType(DbType.MYSQL);

或者你还可以写一个乐观锁 , 全部代码如下

@EnableTransactionManagement
@Configuration
public class MybatisPlusConfig {
    /**
     * 分页插件
     * @return 分页插件实例
     */
    @Bean
    public PaginationInnerInterceptor paginationInterceptor() {
        PaginationInnerInterceptor paginationInterceptor = new PaginationInnerInterceptor();
        paginationInterceptor.setMaxLimit(-1L);
        paginationInterceptor.setDbType(DbType.MYSQL);
        return paginationInterceptor;
    }

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
        return interceptor;
    }
    /**
    * 乐观锁
     */
   @Bean
    public OptimisticLockerInnerInterceptor mybatisPlusInterceptor() {
        return new OptimisticLockerInnerInterceptor();
    }
}
### MyBatisPlus 分页查询 `total` 为 0 的原因及解决方案 #### 原因分析 MyBatis-Plus 使用分页插件来实现分页查询功能。如果遇到 `selectPage` 方法返回的 `total` 记录数为 0,通常可能是由于以下几个方面的原因: - **未正确配置分页拦截器**:如果没有正确注册并配置分页拦截器,则无法正常获取总数。 - **SQL语句错误**:可能存在 SQL 查询语法上的问题,导致统计总数失败。 #### 解决方案 为了确保能够正确获得分页后的总条目数量,在项目中应按照以下方式设置分页插件[^4]: ```java import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; @Configuration public class MybatisPlusConfig { /** * 配置mybatis-plus分页插件 */ @Bean public PaginationInterceptor paginationInterceptor() { PaginationInterceptor page = new PaginationInterceptor(); // 设置数据库方言类型 page.setDialectType("mysql"); return page; } } ``` 另外还需要确认应用程序的数据源以及 MyBatis Plus 日志输出已经正确定义于 `application.yml` 文件内[^5]: ```yaml spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC username: root password: 123456 # 开启mp的日志(输出到控制台) mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl ``` 最后需要注意的是,前端请求接口时应该遵循 RESTful API 设计原则,合理传递分页参数如当前页码和每页大小等信息给后端服务处理[^2].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值