天天看點

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

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

閱讀本文約需要5分鐘

大家好,我是你們的導師,我每天都會給大家分享一些幹貨内容(當然了,周末也需要讓老師休息一下哈)。昨天給大家分享了MyBatis的工作原理,今天來跟大家分享一下MyBatis的分頁插件。

0 前言

MyBatis的一個分頁插件叫PageHelper,雖然沒有那麼的強大(我在最後會說明它的缺點),但還是挺不錯的。

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

可能有人會說,我可以修改生成的檔案,沒錯,這是可行的,但是一般我們通過逆向工程生成的檔案,都不會去動它,是以這個時候,就需要使用分頁插件來解決了。在介紹如何使用這個分頁插件之前,先介紹一下mybatis中的插件是如何工作的:

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

從圖中可以看出,mybatis中首先要在配置檔案中配置一些東西,然後根據這些配置去建立一個會話工廠,再根據會話工廠建立會話,會話發出操作資料庫的sql語句,然後通過執行器操作資料,再使用mappedStatement對資料進行封裝,這就是整個mybatis架構的執行情況。

那麼mybatis的插件作用在哪一環節呢?它主要作用在Executor執行器與mappedeStatement之間,也就是說mybatis可以在插件中獲得要執行的sql語句,在sql語句中添加limit語句,然後再去對sql進行封裝,進而可以實作分頁處理。

搞清楚了分頁插件的執行情況,下面來總結下mybatis中PageHelper的使用。

1 引入依賴

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

2 SqlMapConfig.xml配置插件

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

3 完成分頁功能

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

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

看下執行的結果:

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

可以看到,隻顯示出了10條資料,但是我總共有3096條資料,如果将參數改成(2,10),那麼就會顯示第二頁不同的10條資料,在這就不測試了。這說明PageHelper插件可以幫助我們實作分頁功能,例如EasyUI中就會傳到背景分頁參數資訊,背景就可以根據參數擷取分頁資料等等。

正如前面所說,這個PageHelper其實也有缺點,因為它對逆向工程生成的代碼支援不好,不能對有查詢條件的查詢分頁,會抛異常,上面是無條件查詢的。

當然,我們自己可以修改這個PageHelper插件,使其支援條件查詢,當然,我是修改不了的……網上有修改過後的PageHelper插件,可以支援條件查詢,相對來說就比較強大了,可以在自己的工程中依賴修改過後的分頁插件進行開發。

今天就分享這麼多,關于Mybatis的分頁插件,你學會了多少?歡迎在留言區評論,對于有價值的留言,我們都會一一回複的。如果覺得文章對你有一丢丢幫助,請點右下角【在看】,讓更多人看到該文章。

【我們直招】我月薪2萬招人了!

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

繼續閱讀