問題描述:相同的查尋條件, 分頁顯示的結果和.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也比較符合常人思維邏輯。 個人覺得