Spring Boot訪問數據庫,常用的方式有Mybaits、Hibernate以及Spring Boot提供的JDBC這三種方式。其中,Spring JDBC,是Spring中最基本、最底層的訪問數據庫的實現方式。
我將會分三次內容對每種操作數據庫的方式進行分別說明,感興趣的話,繼續關注後續文章更新哦~
今天,我們先一起來看Spring JDBC是如何操作數據庫的。希望大家通過本篇文章的閱讀,可以瞭解到
- 超級好用的lombok
- Spring Boot的常用bean註解
- 如何使用Spring JDBC操作mysql數據庫
一、實戰原理
1 超級好用的開發輔助工具-lombok
項目演示中會使用到一個超級好用的開發輔助工具lombok。使用它,不僅會節省我們的時間,還會大大減少代碼量。
使用它開發,只需要在IDEA中添加lombok插件,並引入lombok依賴即可(本文不做具體介紹,網上資料很多,大家隨便搜搜就出來啦)。
常用註解
- @Getter和@Setter :使用在屬性上,生成的getter和setter方法。
- @ToString :使用在類上,為對應類實現toString方法。
- @EqualsAndHashCode :使用在類上,生成hashCode和equals方法。
- @NoArgsConstructor :使用在類上,生成無參的構造方法。
- @AllArgsConstructor :使用在類上,生成包含類中所有字段的構造方法。
- @Data :使用在類上,生成setter/getter、equals、canEqual、hashCode、toString方法,如為final屬性,則不會為該屬性生成setter方法。
- @Slf4j :使用在類上,生成log常量。演示中會用到。
2 Spring 常用的bean註解
- @Component ---一個通用的註解,可以定義一個通用的Bean
- @Repository ---數據操作倉庫,即用於定義數據庫操作dao層
- @Service - -業務服務,用於服務層
- @Controller --- 用於controller層
- @RestController---Spring Boot針對Rest服務定製的@Controller註解
3 使用的依賴
<code><dependency>
<groupid>org.springframework.boot/<groupid>
<artifactid>spring-boot-starter-jdbc/<artifactid>
/<dependency>/<code>
4 簡單的JDBC操作方法
JDBCTemplate為我們提供了增刪改查數據庫的方法。
<code>query
queryForObject
queryForList
queryForMap
update
execute/<code>
查詢,除了基本查詢,還提供了返回值分別為Object、list、map等查詢方法,update方法可以分別對數據進行增刪改操作,execute則為基本的數據庫執行方法。
5 方法原理
Spring JDBC,即Spring對JDBC的整合,使我們的使用更為便捷而已。各個操作方法的背後,其實也是執行了JDBC的那6個步驟:
- a 加載數據庫驅動
- b 建立鏈接
- c 創建statement
- d 執行SQL語句
- e 處理結果集
- f 關閉數據庫
Spring Boot會根據引入的依賴,加載數據庫驅動。而JdbcTemplate操作方法,則包含了後5個步驟
其中第4、5步驟,是包含在調用的具體操作類中的。而代碼中是使用action.doInStatement(stmt)去調用具體的操作類的。如query方法
二、實戰環節
好了,做了這麼多準備工作,接下來,讓我們正式進入實戰環節吧~
由於工作、學習中mysql數據庫使用比較普遍,因此特地在此為大家演示Spring JDBC如何實現操作mysql數據庫。其他數據庫的方式也很類似。只需要更換對應的數據庫連接包以及地址配置即可。
那麼有的同學估計要問了,它都支持哪些數據庫呢?
答案就是,支持JDBC的所有數據庫嘍~也就是說它支持幾乎所有關係型數據庫的操作。
1 引入依賴
需要分別引入以下三個依賴:
- spring-jdbc依賴:spring-boot-starter-jdbc
- mysql連接類:mysql-connector-java
- lombok開發輔助類:lombok
2 數據庫信息配置
在配置文件application.properties中分別配置數據庫的url、username、password。
Tips1:
Spring Boot 會根據我們引入的數據庫連接依賴類型,自動配置數據庫的驅動,因此我們可以不需要配置數據庫的驅動項。
同時還要保證數據庫中已經存在了我們後續要用到的User表哦~我創建的表是這樣的
3 新建實體類
我們可以看到,實體類User中就是用了 lombok的兩個註解 @Data和@Builder,有了這兩個註解,我們的實體類,就變得清爽很多了~
4 新建dao層
1)定義類。使用@Repository註解,聲明該類為dao層的bean,通過lombok的@Slf4j註解,進行快捷的日誌輸出
2)注入JdbcTemplate
3)具體操作。使用JdbcTemplate中的操作類,分別新增、查詢操作
查詢,分別演示了返回結果為對象和返回為List的兩種情況,大家感興趣可以自己再嘗試一下其他情況。
5 調用dao層方法
Spring Boot的啟動類,實現了ApplicationRunner接口,並覆蓋其run方法。服務啟動時,就會運行run方法。在run方法中分別調用添加用戶、查詢用戶列表的方法。
Tips2:與ApplicationRunner類似的接口還有CommandLineRunner,大家有興趣可以先自己瞭解一下,以後有機會可以給大家專門講解。在這個地方,大家只需要瞭解ApplicationRunner接口的用法即可。
6 啟動項目
我們可以看到,日誌中顯示,添加了一條數據,並查詢到一條記錄
好了,相信大家對簡單的Spring JDBC操作數據庫方法已經掌握了~
如果想了解更多的操作方法,包括批量操作,查詢結果類型為Map的,以及使用NamedSql的方式,大家可以查看操作類JDBCTemplate,結合官網進行進一步的學習。 當然,有任何問題,也歡迎大家留言與我溝通哦~
三、總 結
1 強大的開發輔助工具lombok可以簡化我們的開發
2 Spring Boot 常用聲明bean的註解
3 Spring JDBC操作數據方式
今天演示了Spring JDBC操作數據庫的原理及方式,並在同時也提到了Spring Boot常用聲明bean的註解、lombok工具的使用、JDBC操作數據庫的原理等內容。
以後,我會繼續以這種原理+實戰的方式,來講述Spring Boot的功能點。這樣學習效率可能更高。建議大家實戰結束以後,再返回看一遍原理,效果會更佳哦
如果你感覺到自己學到了很多,或者複習到了很多技能點,就快來關注微信公眾號-青梅主碼,一起繼續學下去吧~
我會持續更新的哦~
本期項目代碼已上傳到github~有需要的可以參考
<code>https://github.com/wangjie0919/Spring-Boot-Notes/<code>
Spring Boot往期系列文章回顧:
2.
閱讀更多 舒米君 的文章