首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

MySQL Connector/J 完整參考:Driver 類名、JDBC URL 格式與連接屬性大全

     編輯:Java 相關知識

Driver 類名

com.mysql.jdbc.Driver          // 主要類名 (Connector/J 5.1 及以前)
com.mysql.cj.jdbc.Driver       // 6.0+ (JDBC 4.2+, Java 8+)
org.gjt.mm.mysql.Driver        // 向後相容 MM.MySQL 專案類名

註冊方式:Class.forName("com.mysql.cj.jdbc.Driver") 或 META-INF/services/java.sql.Driver 自動載入 (JDBC 4.0+)。

JDBC URL 標準格式

jdbc:mysql://[host][,failoverhost...][:port]/[database][?propertyName1=value1&propertyName2=value2...]
  • host:預設 127.0.0.1
  • port:預設 3306
  • database:可省略,後續 setCatalog() 或 USE db 指定
  • 多主機 (3.0.12+):jdbc:mysql://host1:3306,host2:3306/db?autoReconnect=true

連接屬性完整分類表 (Connector/J 5.1/8.0 通用核心)

類別屬性名說明預設值
連線/認證user資料庫用戶名無
password密碼無
socketFactory自定義 Socket 工廠類名com.mysql.jdbc.StandardSocketFactory
connectTimeout建立連線超時 (ms, 0=無限)0
高可用/叢集autoReconnect連線失敗自動重連false
autoReconnectForPools連線池專用重連策略false
failOverReadOnly故障切換後唯讀true
安全/SSLuseSSL啟用 SSLfalse (8.0+ 預設 true)
requireSSL強制 SSLfalse
verifyServerCertificate驗證伺服器憑證true
效能/快取cachePrepStmts快取 PreparedStatementfalse
prepStmtCacheSize快取語句數量25
prepStmtCacheSqlLimit快取 SQL 長度上限256
useServerPrepStmts使用伺服器端預編譯true (8.0+)
字元集/編碼characterEncoding字元集 (UTF-8/GBK/Big5)自動偵測
useUnicode使用 Unicodetrue
connectionCollation連線校對規則無
除錯/分析profileSQL記錄 SQL 執行時間false
logger自定義 Logger 類StandardLogger (STDERR)
slowQueryThresholdMillis慢查詢閾值 (ms)2000
相容/行為zeroDateTimeBehavior零日期處理: exception/round/convertToNullexception
tinyInt1isBitTINYINT(1) 視為 BITtrue
jdbcCompliantTruncation截斷拋出 DataTruncationtrue

常用生產環境 URL 範例

# 基礎連線 (UTF-8, SSL, 時區)
jdbc:mysql://db.example.com:3306/myapp?useSSL=true&verifyServerCertificate=true&serverTimezone=Asia/Taipei&characterEncoding=UTF-8

# 連線池優化 (HikariCP 建議)
jdbc:mysql://db.example.com:3306/myapp?useSSL=true&cachePrepStmts=true&prepStmtCacheSize=250&prepStmtCacheSqlLimit=2048&useServerPrepStmts=true&rewriteBatchedStatements=true

# 讀寫分離 / 故障轉移 (需 ProxySQL 或驅動端支援)
jdbc:mysql://master:3306,slave1:3306,slave2:3306/myapp?autoReconnect=true&failOverReadOnly=true&loadBalanceStrategy=bestResponseTime

# 命名管道 (Windows 本機, 30-50% 更快)
jdbc:mysql:///myapp?socketFactory=com.mysql.jdbc.NamedPipeSocketFactory&namedPipePath=\\.\pipe\MySQL

命名管道連線 (Windows 專用)

  • 需啟用 MySQL named_pipe=ON
  • URL 加 socketFactory=com.mysql.jdbc.NamedPipeSocketFactory
  • 忽略 host/port,本機極速通訊

自定義 SocketFactory 擴展

public class MySocketFactory extends StandardSocketFactory {
    @Override
    public Socket connect(String host, int port, Properties props) throws SQLException {
        // 自定義連線邏輯: SOCKS Proxy、SSH Tunnel、Unix Domain Socket 等
        return super.connect(host, port, props);
    }
}
// URL 指定: socketFactory=com.example.MySocketFactory

版本遷移重點 (5.1 → 8.0)

項目5.18.0+
Driver 類com.mysql.jdbc.Drivercom.mysql.cj.jdbc.Driver
JDK 需求6+8+
SSL 預設falsetrue
時區處理serverTimezone 必填自動偵測/支援 IANA
公鑰獲取不支援allowPublicKeyRetrieval=true (缓存掉公鑰)
Maven 坐標mysql:mysql-connector-javacom.mysql:mysql-connector-j

總結

MySQL Connector/J 以豐富的連接屬性著稱,掌握 Driver 類名、URL 格式、核心屬性分類 可快速解決連線、效能、安全、高可用等生產問題。建議專案統一使用 com.mysql.cj.jdbc.Driver (8.0+)、useSSL=true、serverTimezone 明確指定、連線池開啟 cachePrepStmts 等關鍵優化參數。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved