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