MybatisPlus多表联查分页,Total计数异常
Kiml Lv5
  • 更新

1
24.04.19 初始记录

问题

使用 MP 的分表联查,出现了查询出 10 条数据,但是 Total 数量显示 4 的问题。一开始以为是 SQL 书写错误,但是看了同样一张表的另一个 SQL,只是加上了 GROUP BY,就可以显示正确的 Total 数。

DEBUG

控制台输出 SQL 语句,发现 count() 语句的记录只到了 left join 前,所以计数异常。

解决

使用 page 方法时:加上以下语句

1
2
// 需要手动把sql的优化关闭。不然计数的时候只会查主表的记录数
page.setOptimizeCountSql(false);

这里在源码中默认是开启的

image

如果不关闭将会导致计算总记录数据的时候,sql 语句会丢弃后面的子查询,造成记录数结果不正确。

 评论
评论插件加载失败
正在加载评论插件
由 Hexo 驱动 & 主题 Keep
访客数 访问量