中高級程序員可能都不會使用 spring-boot-starter-jdbc 訪問 MySQL

使用 spring-boot-starter-jdbc 訪問 MySQL

MySQL 是目前項目中廣泛運用的關係數據庫,直接使用 JDBC 訪問 MySQL 是經常使用的技術方式。MySQL 所使用的 SQL 是訪問數據庫最常用的標準化語言。由於開源、體積小、速度快、總體擁有成本低等特點,一般後臺企業應用開發都會選擇 MySQL 作爲數據庫。

本節我們通過對 JDBC 與 MySQL 訪問來了解 Spring Data 提供的訪問數據庫的不同解決方案。Spring Boot 自動配置了數據訪問的基礎設施,我們需要直接或者間接地依賴 Spring-JDBC 組件包,一旦 Spring-JDBC 位於 Spring Boot 應用的 classpath 路徑,就會觸發數據訪問相關的自動配置行爲,最簡單的做法就是把 spring-boot-starter-jdbc 添加爲應用的依賴。

Spring 提供了 JdbcTemplate 來對數據庫訪問技術 JDBC 進行封裝,包括管理數據庫連接、簡單查詢結果映射到 Java 對象、複雜結果集通過實現 RowMapper 接口映射到 Java 對象。默認情況下,如果沒有配置數據源,Spring Boot 會自動配置一個內嵌的數據庫的 DataSource。通常情況下,我們會自己配置數據源,Spring Boot 提供自動配置能力,根據配置參數對 DataSource 進行自定義配置,下面是接入步驟。

1. 引入 Maven 依賴

集成 MySQL 數據庫之前,我們需要在項目的 POM 文件中添加 MySQL 所需的依賴,具體代碼如下:

2. 配置數據源

在 Spring Boot 中,只要配置好數據源 DataSource,就能自動使用 JdbcTemplate。下面是一個多數據源的配置——application.XML 配置文件,代碼如下:

3. 自定義 DataSource 配置

注 意 :@Primary 注 解 的 作 用 是 保 證 項 目 中 只 有 一 個 主 的 DataSourceProperties Bean。

4. 連接池的選擇

在 Sping Boot 2.0 之後默認使用 Hikari 數據庫連接池,可以不再用 Druid、c3p0 等連接池了。Hikari 的優勢是其高效的性能和併發性,無須主動引入 HikariCP 的依賴。因爲在 Spring Boot 2.X 中,spring-boot-starter-jdbc 默 認 引 入 HikariCP 依 賴 。在 application.yml 中,添加 HikariCP 配置如下:

如果你的項目對監控要求高於性能需求,則可以使用 Druid 數據庫連接池。Druid 提供了強大的監控功能,Druid 已經在阿里巴巴部署了超過 600 個應用,經歷過一年多生產環境大規模部署的嚴苛考驗。可以引 用 Druid 的 starter 依 賴 :druid-spring-boot-starter , 然 後 在 application.yml 中,添加 Druid 配置如下:

Druid 的監控功能使用如下。

● 通過
spring.datasource.filter.stat 配置 StatFilter,實現統計監控信息。

● 通 過
spring.datasource.filter.stat-view-servlet 配 置 StatViewServlet,提供監控信息的 HTML 頁面和 JSON API。

● 啓動項目後,訪問 http://127.0.0.1:8080/druid 地址,可以看到監控頁面。

5.JdbcTemplate 訪問數據庫

使用 JdbcTemplate 自帶的 CRUD 功能,@Repository 是 Spring 提供的註解,作用於類,同 @Service、@Component 註解功能類似。

JdbcTemplate 主要提供以下 5 類方法。

● execute 方法:用於執行任何 SQL 語句,一般用於執行 DDL 語句。

● update 方法:用於執行新增、修改、刪除等語句。

● batchUpdate 方法:用於執行批處理相關語句。

● query 方法及 queryForXXX 方法:用於執行查詢相關語句。

● call 方法:用於執行存儲過程、函數相關語句。

6. 事務的支持

Spring Boot 中 Maven 依賴中添加了 spring-boot-starter-jdbc 依賴,就是可以實現對事務的支持,只需要在 Dao 業務層添加事務註解 @Transactional 即可。

注 意 :rollbackFor( 觸 發 回 滾 異 常 ) , 默 認 是 RuntimeException 和 Erro ( unchecked 異 常 ) 。在 默 認 情 況 下 ,Spring 框架只在拋出運行時和不可檢查異常時纔會對事務回滾。

● 如果你想讓 checked 異常也回滾,註解方式如下:

● 如果你想讓 unchecked 異常也不回滾,註解方式如下:

● 不需要事務管理的方法如下:

另外,如果你在業務方法中使用了 try{}catch{},當出現數據異常時,事務就不回滾了,所以如果想要回滾異常事務,必須要主動將異常拋出來。

來源: https://www.toutiao.com/article/7099702635636408864/?log_from=dd0ee51311cea_1653293128643

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/Fhd8Keqo5o-NuBoQq4HJZw