问题描述:相同的查寻条件, 分页显示的结果和.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也比较符合常人思维逻辑。 个人觉得