基本条件
尝试使用3.1.0和3.1.2均出现此问题
mysql数据库5.7
使用租户模式
问题描述:
分页查询后page的records数据量是pagesize的两倍,多次改变size查询均查出结果为size的两倍
查询sql:
查询打印日志
==> Preparing: SELECT COUNT(1) FROM t_comment WHERE t_comment.merchant_id = 1 AND merchant_user_id = ?
==> Parameters: 4(Long)
==> Preparing: SELECT id, merchant_id, shop_id, order_id, goods_id, merchant_user_id, customer_name, avatar, grade, remark, picture_urls, create_time, anonymous_type FROM t_comment WHERE t_comment.merchant_id = 1 AND merchant_user_id = ? LIMIT ?,?
==> Parameters: 4(Long), 4(Long), 4(Long)
<== Total: 8
limit 第二个参数为4结果返回8,不符合预期
返回结果打印:
如果pagesize=5 --> total=10
pagesize=6 --> total=12
sql本地试过了返回四条记录正确
排查后怀疑是在分页查询内部的问题,请提供解决思路,谢谢
Comment From: miemieYaho
给出你的复现demo
Comment From: chenyixin8854
@miemieYaho 我又测了几遍,之前的问题描述有点片面,返回数据不是两倍,返回数据是当前页及之前页的合计,当前页换成1的话就返回数量正常,当前也是3的话就返回前三页的数据,项目不好拆,我自己先找找吧,谢谢
Comment From: chenyixin8854
确认了,问题是shardingjdbc引起的,和mybatis-plus没有关系
Comment From: lbin2012
@miemieYaho 我又测了几遍,之前的问题描述有点片面,返回数据不是两倍,返回数据是当前页及之前页的合计,当前页换成1的话就返回数量正常,当前也是3的话就返回前三页的数据,项目不好拆,我自己先找找吧,谢谢
这个最后是怎么解决的,项目中也遇到了
Comment From: RickZhangYixin
还能评论不?sharding3.1有这个问题,4.0.1就修复了