<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version></dependency>mysql-connector-java-x.x.xx.jarcom.mysql.cj.jdbc.Driver (8.0+) / com.mysql.jdbc.Driver (5.1)java -cp ".:mysql-connector-java-8.0.33.jar" MainClassCLASSPATH(不推薦,污染全域)try {
Class.forName("com.mysql.cj.jdbc.Driver");
System.out.println("MySQL JDBC Driver loaded successfully!");
} catch (ClassNotFoundException e) {
System.err.println("Driver not found!");
e.printStackTrace();
}
JDBC 4.0+ (Java 6+):若驅動 JAR 在 classpath,DriverManager 會自動發現(SPI 機制),Class.forName 可省略。
jdbc:mysql://host:port/dbname?key1=value1&key2=value2
| 參數 | 說明 | 建議值 |
|---|---|---|
| useSSL | 是否使用 SSL | false (內網) / true (外網) |
| serverTimezone | 時區 | Asia/Taipei / UTC |
| characterEncoding | 字元集 | utf8mb4 |
| autoReconnect | 自動重連 | true (慎用,建議連線池處理) |
| useUnicode | Unicode 支援 | true |
| rewriteBatchedStatements | 批次重寫優化 | true |
| cachePrepStmts | 預處理快取 | true |
| prepStmtCacheSize | 快取大小 | 250 |
| prepStmtCacheSqlLimit | 單條 SQL 長度限制 | 2048 |
String url = "jdbc:mysql://localhost:3306/my_db?"
+ "useSSL=false&serverTimezone=Asia/Taipei&characterEncoding=utf8mb4"
+ "&rewriteBatchedStatements=true&cachePrepStmts=true";
Connection conn = DriverManager.getConnection(url, "user", "pass");
HikariConfig config = new HikariConfig();
config.setJdbcUrl(url);
config.setUsername("user");
config.setPassword("pass");
config.setMaximumPoolSize(20);
config.setMinimumIdle(5);
config.addDataSourceProperty("cachePrepStmts", "true");
config.addDataSourceProperty("prepStmtCacheSize", "250");
config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
DataSource ds = new HikariDataSource(config);