Mybatis自帶的兩種分頁方法
Mybatis有兩種自帶分頁方法:RowBounds和PageHelper,其中前者是邏輯分頁,後者是實體分頁。(本文後續假設使用myabtis-generator生成mapper)
RowBounds
RowBounds方法有兩個入參:offset和limit。它的實作是邏輯分頁,即先一次性擷取所有resultSet,然後從offset位置開始截取limit條記錄,丢棄其它記錄。
這種方式的優點是
使用簡單友善,但是性能差,因為每次是查詢所有資料後進行截取。
使用方法:新添加一個手寫的HandwriteMapper.xml,在裡面添加一條新的sql
<select
ResultMapper.java
List
實際調用:
// 0,100換成你的參數
PageHelper
PageHelper是Mybatis開源的第三方插件,詳情見官方文檔:
如何使用分頁插件pagehelper.github.io
這種方法的優點:使用實體分頁,是以性能比上面的方法更好;調用也很友善
結論
大資料量的情況下推薦PageHelper,小資料量可以使用RowBounds當然也可以使用原生的sql語句進行分頁,但是那樣略微繁瑣,本文提出的方案已經可以滿足日常需求(其實是懶得寫了hhh)
碰到的bug!(劃重點)
作者在使用RowBounds時碰到一個奇怪的bug。在對資料庫資料分批次進行分頁查詢時,發現從第二頁開始資料量為0,至今仍不知原因……既然如此,用pageHelper不香嗎(手動狗頭