mybatis 分页问题 (个人认为算是个bug)


问题描述:相同的查寻条件, 分页显示的结果和.net版本的分页结果数量一样,排序不一样, 不同的页有相同的数据。比如:第2面和第3页都有同一条相同的数据。

核心代码:

1 //自己实现
2         int totalRows = mapper.selectCountByExample(example);
3         pager.setTotalRows(totalRows);
4         int offset=(pager.getPageNo()-1)*pager.getPageSize();
5         int limit = pager.getPageSize();
6         RowBounds rowBounds = new RowBounds(offset,limit);
7         List<T> list = mapper.selectByExampleAndRowBounds(example,rowBounds);

生成的sql语句:

1   SELECT *
2     FROM (SELECT TMP_PAGE.*, ROWNUM ROW_ID
3             FROM (SELECT *
4                     FROM ORDER_statistics
5                    WHERE userid = 2458 and 
6                    (createDate >= to_date('2017-10-01','yyyy-MM-dd')  and createDate<= to_date('2017-10-10','yyyy-MM-dd') )
7                    order by TongJiDate DESC) TMP_PAGE
8            WHERE ROWNUM <= 10)
9    WHERE ROW_ID > 5

当TongJiDate 同一时间有很多数据的时候,会导致。第二页和第三页都显示出一个想同的数据,(也可能是我使用的方式不对,目前还不找到)

 

.net版本的框架生成的语句:

 1 SELECT *
 2 FROM (SELECT ROWNUM RN, H.*
 3 FROM ((SELECT *
 4 FROM ORDER_statistics
 5 WHERE OWNER_CENTER_ID = 2458
 6 AND (createDate >= to_date('2017-10-01', 'yyyy-mm-dd'))
 7 AND (createDate <= to_date('2017-10-10', 'yyyy-mm-dd'))
 8 ORDER BY TongJiDate desc) H)) Z
 9 WHERE Z.RN <= 10
10 AND Z.RN > 5

在界面显示的,没有任务问题,sql也比较符合常人思维逻辑。 个人觉得

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM