天天看點

SpringBoot+Mybatis+ Druid+PageHelper 實作多資料源并分頁

本篇文章主要講述的是SpringBoot整合Mybatis、Druid和PageHelper 并實作多資料源和分頁。其中SpringBoot整合Mybatis這塊,在之前的的一篇文章中已經講述了,這裡就不過多說明了。重點是講述在多資料源下的如何配置使用Druid和PageHelper 。

在使用Druid之前,先來簡單的了解下Druid。

Druid是一個資料庫連接配接池。Druid可以說是目前最好的資料庫連接配接池!因其優秀的功能、性能和擴充性方面,深受開發人員的青睐。

Druid已經在阿裡巴巴部署了超過600個應用,經過一年多生産環境大規模部署的嚴苛考驗。Druid是阿裡巴巴開發的号稱為監控而生的資料庫連接配接池!

同時Druid不僅僅是一個資料庫連接配接池,Druid 核心主要包括三部分:

基于Filter-Chain模式的插件體系。

DruidDataSource 高效可管理的資料庫連接配接池。

SQLParser

Druid的主要功能如下:

是一個高效、功能強大、可擴充性好的資料庫連接配接池。

可以監控資料庫通路性能。

資料庫密碼加密

獲得SQL執行日志

擴充JDBC

介紹方面這塊就不再多說,具體的可以看官方文檔。

那麼開始介紹Druid如何使用。

首先是Maven依賴,隻需要添加druid這一個jar就行了。

配置方面,主要的隻需要在application.properties或application.yml添加如下就可以了。

說明:因為這裡我是用來兩個資料源,是以稍微有些不同而已。Druid 配置的說明在下面中已經說的很詳細了,這裡我就不在說明了。

成功添加了配置檔案之後,我們再來編寫Druid相關的類。

首先是MasterDataSourceConfig.java這個類,這個是預設的資料源配置類。

其中這兩個注解說明下:

@Primary :标志這個 Bean 如果在多個同類 Bean 候選時,該 Bean

優先被考慮。多資料源配置的時候注意,必須要有一個主資料源,用 @Primary 标志該 Bean。

@MapperScan: 掃描 Mapper 接口并容器管理。

需要注意的是sqlSessionFactoryRef 表示定義一個唯一 SqlSessionFactory 執行個體。

上面的配置完之後,就可以将Druid作為連接配接池使用了。但是Druid并不簡簡單單的是個連接配接池,它也可以說是一個監控應用,它自帶了web監控界面,可以很清晰的看到SQL相關資訊。

在SpringBoot中運用Druid的監控作用,隻需要編寫StatViewServlet和WebStatFilter類,實作注冊服務和過濾規則。這裡我們可以将這兩個寫在一起,使用@Configuration和@Bean。

為了友善了解,相關的配置說明也寫在代碼中了,這裡就不再過多贅述了。

代碼如下:

編寫完之後,啟動程式,在浏覽器輸入:http://127.0.0.1:8084/druid/index.html ,然後輸入設定的使用者名和密碼,便可以通路Web界面了。

在進行多資料源配置之前,先分别在springBoot和springBoot_test的mysql資料庫中執行如下腳本。

注:為了偷懶,将兩張表的結構弄成一樣了!不過不影響測試!

在application.properties中已經配置這兩個資料源的資訊,上面已經貼出了一次配置,這裡就不再貼了。

這裡重點說下 第二個資料源的配置。和上面的MasterDataSourceConfig.java差不多,差別在與沒有使用@Primary 注解和名稱不同而已。需要注意的是MasterDataSourceConfig.java對package和mapper的掃描是精确到目錄的,這裡的第二個資料源也是如此。那麼代碼如下:

成功寫完配置之後,啟動程式,進行測試。

分别在springBoot和springBoot_test庫中使用接口進行添加資料。

t_user

t_student

成功添加資料之後,然後進行調用不同的接口進行查詢。

請求:

傳回:

通過資料可以看出,成功配置了多資料源了。

PageHelper是Mybatis的一個分頁插件,非常的好用!這裡強烈推薦!!!

PageHelper的使用很簡單,隻需要在Maven中添加pagehelper這個依賴就可以了。

Maven的依賴如下:

注:這裡我是用springBoot版的!也可以使用其它版本的。

添加依賴之後,隻需要添加如下配置或代碼就可以了。

第一種,在application.properties或application.yml添加

第二種,在mybatis.xml配置中添加

第三種,在代碼中添加,使用@Bean注解在啟動程式的時候初始化。

因為這裡我們使用的是多資料源,是以這裡的配置稍微有些不同。我們需要在sessionFactory這裡配置。這裡就對MasterDataSourceConfig.java進行相應的修改。在masterSqlSessionFactory方法中,添加如下代碼。

注:其它的資料源也想進行分頁的時候,參照上面的代碼即可。

這裡需要注意的是reasonable參數,表示分頁合理化,預設值為false。如果該參數設定為 true 時,pageNum<=0 時會查詢第一頁,pageNum>pages(超過總數時),會查詢最後一頁。預設false 時,直接根據參數進行查詢。

設定完PageHelper 之後,使用的話,隻需要在查詢的sql前面添加PageHelper.startPage(pageNum,pageSize);,如果是想知道總數的話,在查詢的sql語句後買呢添加 page.getTotal()就可以了。

代碼示例:

代碼編寫完畢之後,開始進行最後的測試。

查詢t_user表的所有的資料,并進行分頁。

控制台列印:

查詢t_student表的所有的資料,并進行分頁。

查詢完畢之後,我們再來看Druid 的監控界面。在浏覽器輸入:http://127.0.0.1:8084/druid/index.html

SpringBoot+Mybatis+ Druid+PageHelper 實作多資料源并分頁

可以很清晰的看到操作記錄!

如果想知道更多的Druid相關知識,可以檢視官方文檔!

這篇終于寫完了,在進行代碼編寫的時候,碰到過很多問題,然後慢慢的嘗試和找資料解決了。本篇文章隻是很淺的介紹了這些相關的使用,在實際的應用可能會更複雜。如果有有更好的想法和建議,歡迎留言進行讨論!

參考文章:https://www.bysocket.com/?p=1712

Durid官方位址:https://github.com/alibaba/druid

PageHelper官方位址:https://github.com/pagehelper/Mybatis-PageHelper

項目我放到github上面去了:

https://github.com/xuwujing/springBoot

如果覺得不錯,希望順便給個star。

到此,本文結束,謝謝閱讀。

版權聲明:

作者:虛無境

部落格園出處:http://www.cnblogs.com/xuwujing

CSDN出處:http://blog.csdn.net/qazwsxpcm    

個人部落格出處:http://www.panchengming.com

原創不易,轉載請标明出處,謝謝!

如果你對生活感覺到了絕望,請不要氣餒。因為這樣隻會讓你更加絕望!

所謂的希望往往都是在絕望中萌發的,是以,請不要放棄希望!

繼續閱讀