談一談Mybatis分頁查詢

其實數據庫本身是支持物理級別的分頁查詢的,如mysql通過limit語句,Oracle的分頁方法是嵌套子查詢,需要用到rownum這個屬性。
基於這一點,通過mybatis的動態sql是完全可以支持物理級別的分頁查詢。但這種分頁查詢對應的sql語句對使用不同的數據庫時是不同的,這就造成更換數據庫時部分語句要做調整。
爲了實現上面的不足,mybatis本身提供了分頁查詢功能,但這個功能比較渣,他是將數據按照不分頁全部查詢出來,然後在內存中,根據當前頁對數據進行二次過濾。這種方式在數據量較大時性能可想而知!
儘管mybatis本身的分頁查詢比較挫,但其框架本身的設計比較靈活,提供了插件機制,可以很方便對StatementHandler等進行攔截和擴展。現在mybatis的分頁插件本身就是利用mybatis的插件機制,在mybatis執行sql語句前,將sql按照不同的數據庫,進行不同的改寫加上分頁查詢的條件,實現了物理級別的分頁查詢。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章