Mybatis分页数据的第二页跟第三页竟然一模一样?

41 阅读1分钟

昨天又是辛苦工作的一天,但是就在临近下班的时候,如果测试给我提了一个bug,具体内容是:分页数据的第二页跟第三页竟然一模一样。 然后我就想着会不会是我没拿到前端传的pageNo呢?或者是前端没传?然后我就开始debug。经过一顿点鼠标之后发现,数据一切正常,业务逻辑也没任何问题,那问题就肯定是出现在sql语句上面了。 接下来我将出问题的代码贴出来,看大家能否想到问题出现在哪里:

<select id="selectRegisterSon" parameterType="Map" resultType="cn.xx.xx.vo.xxxVo"> 
    select s.id, r.pfaccount, s.account, s.password from sy_cv_register_xx s 
    left join sy_cv_register r on s.register_id = r.id 
    where s.register_id = #{registerId} 
    ORDER BY s.create_time DESC LIMIT #{offset}, #{pageSize} 
</select> 
<select id="selectTotal" parameterType="Map" resultType="Long"> 
    select count(*) from sy_cv_register_xx s 
    left join sy_cv_register r on s.register_id = r.id 
    where s.register_id = #{registerId} 
</select> 

这里是数据库部分:

image.png

大家仔细看上面的sql语句,是不是没有任何问题。然后一开始我也认为没问题,然后我还将这段sql拿去执行,发现 诶?为什么直接执行也是第二页跟第三页一摸一样的数据。怎么回事,有没有经验丰富的大佬已经看出端倪了 是的 就是下面这一行代码出现了问题,我之后把它去掉就一切正常了

ORDER BY s.create_time DESC 

我当时就觉得很奇怪了,为什么,直到我看到create_time那个字段的时间一模一样之后,我隐隐约约就意识到点什么东西了,但是我又不确定,希望懂这个的大佬来指点一下