SpringBoot整合Mybatis+Druid

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優化效率。與其他數據庫連接池的對比:

SpringBoot整合Mybatis+Druid

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

搭 建 步 驟

第一步:Spring Boot的項目構建

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

SpringBoot整合Mybatis+Druid

第二步:添加依賴

Spring Boot官方文檔中解釋,在啟用spring-boot-starter後會默認使用logback作為日誌框架,本項目選用log4j2,因此需要全局exclude掉Spring Boot默認日誌。

SpringBoot整合Mybatis+Druid

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

SpringBoot整合Mybatis+Druid

Mybatis for Spring Boot 依賴。

SpringBoot整合Mybatis+Druid

數據庫驅動與數據庫連接池依賴。

SpringBoot整合Mybatis+Druid

日誌依賴

SpringBoot整合Mybatis+Druid

第三步:啟動組件掃描

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

SpringBoot整合Mybatis+Druid

第四步:配置數據源

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

SpringBoot整合Mybatis+Druid

同時在yml文件中添加數據源配置。StatviewConfig開啟後可使用druid內置監控。

SpringBoot整合Mybatis+Druid

第五步:配置Mybatis

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

SpringBoot整合Mybatis+Druid

Mybatis的Mapper只能用接口定義,默認情況下需要在mapper interface上添加@Mapper標籤。

第六步:測試

創建Usr對象並在數據庫創建表結構。通過SpringMVC發起對UserService的調用,查詢數據庫中的user記錄。最後查看監控和日誌。

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

SpringBoot整合Mybatis+Druid

接著查看Druid內置監。URL: http://localhost:8080/druid/index.html,可以發現Druid Monitor已經幫助我們記錄了本次調用的SQL,防火牆統計信息,URL監控等數據。

SpringBoot整合Mybatis+Druid

最後查看控制檯輸出MyBatis的SQL日誌

SpringBoot整合Mybatis+Druid

OK 打完收工!


分享到:


相關文章: