mybatis-plus中getotal为0
时间: 2025-03-07 18:04:01 浏览: 40
### MyBatis-Plus 中 `getTotal` 返回 0 的原因
在使用 MyBatis-Plus 进行分页查询时,如果发现 `getTotal()` 方法返回 0,通常有以下几个可能的原因:
#### 1. 分页插件未正确配置
MyBatis-Plus 的分页功能依赖于分页插件的拦截器来动态修改 SQL 查询语句。如果没有正确配置分页插件,则不会触发分页逻辑,导致总记录数无法计算。
为了确保分页插件已正确加载并生效,可以在 Spring Boot 应用程序中添加如下配置[^2]:
```java
@Configuration
public class MybatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
```
#### 2. 数据源为空或无符合条件的数据
当数据库表确实不存在任何数据,或者查询条件过于严格以至于没有任何匹配项时,`getTotal()` 将会返回 0。此时建议先执行一次不带分页参数的基础查询,确认是否存在预期中的数据。
可以通过简单的测试方法验证这一点:
```java
@Test
void testDataExistence() {
List<User> users = userMapper.selectList(null);
System.out.println(users.size());
}
```
#### 3. 使用了错误的 Page 对象实例化方式
创建 `Page<T>` 实例时传入了不当的参数也会造成统计总数异常。应严格按照官方文档推荐的方式初始化分页对象,并指定合理的当前页码和每页大小。
正确的做法应该是这样[^3]:
```java
// 正确的做法
Page<User> page = new Page<>(current, size);
IPage<User> iPage = userMapper.selectPage(page, null);
System.out.println(iPage.getTotal()); // 输出总条目数量
iPage.getRecords().forEach(System.out::println); // 遍历分页后的列表
```
### 解决方案总结
针对上述提到的各种情况,可以采取以下措施解决问题:
- **检查分页插件** 是否已经注册到 MyBatis Plus 的全局配置当中;
- **核实目标表格内是否有实际存在的有效数据** 或者调整查询条件使之能够命中更多记录;
- **按照标准语法构建 Page 对象**, 并传递给对应的 Mapper 接口完成最终调用;
通过以上手段应该能有效地排查并修复 `getTotal()` 函数总是给出零值的现象。
阅读全文
相关推荐

















