SpringBoot整合Mybatis+Druid

weixin_33907511發表於2018-08-16

1.SpringBoot 作為一款約定大於配置的微服務框架,得到了業界的大量推廣和應用。對SpringBoot的學習使用可以有效的幫助開發簡化開發流程,配置過程,部署過程。

2.資料庫的互動是開發過程中很常見的一種業務,資料層的接入方式眾多,JDBC,Spring JdbcTemplate,Hibernate,Mybatis等等。傳統的JDBC因為模板程式碼眾多,侵入式的事物操作極容易出現問題。老牌的Hibernate從物件的角度去看待資料庫,從而在物件層面完全封裝資料庫操作,簡化開發程式碼,提升開發效率。但也隨之帶來了定製化SQL使用困難,業務邏輯模型與資料庫模型耦合度高,資料量大時效能損耗嚴重等一系列問題,導致大型網際網路專案往往對其避之不及。而MyBatis作為一款輕量級、半自動化的ORM框架脫穎而出。SQL與程式碼的分離便於維護管理,邏輯標籤控制SQL的拼接實現動態SQL,查詢結果集與Java物件自動對映,可以編寫原生SQL,方便SQL優化等優點讓更多的開發選擇它。

3.alibaba釋出的Druid,號稱JAVA語言中最好的資料庫連線池,提供強大的監控和擴充套件功能,進一步提升開發人員的SQL優化效率。與其他資料庫連線池的對比:

13465705-c9b774f1fa863391

紙上得來終覺淺,絕知此事要躬行。為了加深對以框架的理解運用,我將以上框架做一次整合運用。技術棧Spring, Spring Boot,Mybatis,Druid,Log4j2, Maven

 搭 建 步 驟 

第一步:Spring Boot的專案構建

採用maven專案管理工具,目錄結構如下:

13465705-024c6b876362a520

第二步:新增依賴

Spring Boot官方文件中解釋,在啟用spring-boot-starter後會預設使用logback作為日誌框架,本專案選用log4j2,因此需要全域性exclude掉Spring Boot預設日誌。

13465705-acf212d6a2b2fdb6

很多教學在spring-boot-starter-web處exclude,這種做法是錯誤的,會導致Spring Boot啟動時發現多個SLF4J bingdings。

13465705-3b086f36c1344fb7

Mybatis for Spring Boot 依賴。

13465705-1ba06de76bfcbaee

資料庫驅動與資料庫連線池依賴。

13465705-136194b9b14e7177

日誌依賴

13465705-a8aa17cb3aacf8ae

第三步:啟動元件掃描

選用Java註解+自動注入的方式配置Spring Bean,需要開啟對特定包的元件掃描。

13465705-118ca8bbee244c24

第四步:配置資料來源

使用Spring Boot整合Druid的方式,通過@ConfigurationProperties來做屬性注入。Spring的事物管理配置非常方便,事物管理配置資料來源即可。

13465705-753c35cded4e5884

同時在yml檔案中新增資料來源配置。StatviewConfig開啟後可使用druid內建監控。

13465705-7f997966947d92a3

第五步:配置Mybatis

配置mybatis的SqlSessionFactory。新增MapperScan標籤的同時指定sqlSessionFactiory的引用。

13465705-a5059019fa03f819

Mybatis的Mapper只能用介面定義,預設情況下需要在mapper interface上新增@Mapper標籤。

第六步:測試

建立Usr物件並在資料庫建立表結構。通過SpringMVC發起對UserService的呼叫,查詢資料庫中的user記錄。最後檢視監控和日誌。

首先我們通過POSTMAN發起GET請求:

13465705-cf9a4bafe8db2117

接著檢視Druid內建監。URL: http://localhost:8080/druid/index.html,可以發現Druid Monitor已經幫助我們記錄了本次呼叫的SQL,防火牆統計資訊,URL監控等資料。

13465705-e34d19e9ad789382

最後檢視控制檯輸出MyBatis的SQL日誌

13465705-d2fc14a70b0f9129

OK 打完收工!


進群獲取高清大綱、往期架構視訊、筆記、原始碼等資料。歡迎大家加入Java高階架構群

:855355016

本群提供免費的學習指導架構資料以及免費的解答職業生涯規劃以及面試指導

不懂得問題都可以在本群提出來。

進群修改群備註:開發年限-地區-經驗 方便架構師解答問題。

1、具有1-5工作經驗的,面對目前流行的技術不知從何下手,

需要突破技術瓶頸的。2、在公司待久了,過得很安逸,

但跳槽時面試碰壁。需要在短時間內進修、跳槽拿高薪的。

3、如果沒有工作經驗,但基礎非常紮實,對java工作機制,

常用設計思想,常用java開發框架掌握熟練的。

4、覺得自己很牛B,一般需求都能搞定。

但是所學的知識點沒有系統化,很難在技術領域繼續突破的。

5. 群號:855355016進階高階架構群備註好資訊!裡面有BAT大牛直播授課

進群獲取高清大綱、往期架構視訊、筆記、原始碼等資料

相關文章