MyBatis學習:MyBatis分頁插件PageHelper的使用

MyBatis的分頁插件?? ? MyBatis的一個分頁插件叫PageHelper。

? ? ? ? mysql中,分頁的sql是使用limit來做,如果我們自己寫sql,那分頁肯定是沒有任何問題的。但是一旦model多了起來,復雜了起來,我們很自然的想到使用mybatis的逆向工程來生成相應的po和mapper,但是同時也會帶來弊端,比如這里的分頁問題就不好解決了。

可以修改生成的文件,是可行的,但是一般我們通過逆向工程生成的文件,都不會去動它,所以這個時候,就需要使用分頁插件來解決了。

mybatis中的插件是如何工作的:

????????????mybatis中首先要在配置文件中配置一些東西,然后根據(jù)這些配置去創(chuàng)建一個會話工廠,再根據(jù)會話工廠創(chuàng)建會話,會話發(fā)出操作數(shù)據(jù)庫的sql語句,然后通過執(zhí)行器操作數(shù)據(jù),再使用mappedStatement對數(shù)據(jù)進行封裝,這就是整個mybatis框架的執(zhí)行情況。

? ??????????mybatis的插件作用在哪一環(huán)節(jié)呢?它主要作用在Executor執(zhí)行器與mappedeStatement之間,也就是說mybatis可以在插件中獲得要執(zhí)行的sql語句,在sql語句中添加limit語句,然后再去對sql進行封裝,從而可以實現(xiàn)分頁處理。

? ??????????搞清楚了分頁插件的執(zhí)行情況,下面來總結(jié)下mybatis中PageHelper的使用。

1. 引入依賴?

2. SqlMapConfig.xml配置插件

3. 完成分頁功能

? ??????????查詢的sql語句執(zhí)行之前,添加一行代碼PageHelper.startPage(1, 10);第一個參數(shù)表示第幾頁,第二個參數(shù)表示每頁顯示的記錄數(shù)。這樣在執(zhí)行sql后就會將記錄按照語句中設置的那樣進行分頁。如果需要獲取總記錄數(shù)的話,需要PageInfo類的對象,這個對象可以獲取總記錄數(shù),下面看下測試的代碼。

執(zhí)行的結(jié)果:

????????????可以看到,只顯示出了10條數(shù)據(jù),但是我總共有3096條數(shù)據(jù),如果將參數(shù)改成(2,10),那么就會顯示第二頁不同的10條數(shù)據(jù),在這就不測試了。這說明PageHelper插件可以幫助我們實現(xiàn)分頁功能,例如EasyUI中就會傳到后臺分頁參數(shù)信息,后臺就可以根據(jù)參數(shù)獲取分頁數(shù)據(jù)等等。

? ??????????PageHelper其實也有缺點,因為它對逆向工程生成的代碼支持不好,不能對有查詢條件的查詢分頁,會拋異常,上面是無條件查詢的。

? ??????????自己可以修改這個PageHelper插件,使其支持條件查詢,網(wǎng)上有修改過后的PageHelper插件,可以支持條件查詢,相對來說就比較強大了,可以在自己的工程中依賴修改過后的分頁插件進行開發(fā)。


參考:https://mp.weixin.qq.com/s/HFOdw5S-4Ajg_E5YDbAwoQ

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容