首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL JDBC 驅動類名演進:org.gjt.mm.mysql.Driver vs com.mysql.jdbc.Driver 兼容性說明

     編輯:Oracle 資料庫相關知識

早期 MySQL Connector/J 使用 org.gjt.mm.mysql.Driver,後統一為 com.mysql.jdbc.Driver (5.0+) 並在 8.0 進一步變更為 com.mysql.cj.jdbc.Driver。本文釐清三代驅動類名關係、兼容性策略與測試代碼驗證。

一、驅動類名演進時間軸

版本時期驅動類全名Jar 檔案特徵狀態
MySQL Connector/J 3.0/3.1 (早期)org.gjt.mm.mysql.Drivermm.mysql-2.0.x.jar已停止維護
Connector/J 5.0 ~ 5.1 (主流長期版本)com.mysql.jdbc.Drivermysql-connector-java-5.1.x.jar廣泛使用,支援至 5.1.49
Connector/J 6.0/8.0 (現代版本)com.mysql.cj.jdbc.Drivermysql-connector-java-8.0.x.jar當前推薦,Java 8+ 原生支援

二、兼容性機制

  • org.gjt.mm.mysql.Driver 在 5.1 版本中**保留為類別別名**,委派給 com.mysql.jdbc.Driver,確保舊代碼零修改升級
  • 兩者**功能完全一致**,無效能差異,純粹為套件重命名
  • 新專案**強烈建議**直接使用 com.mysql.jdbc.Driver (5.1) 或 com.mysql.cj.jdbc.Driver (8.0+)

三、測試代碼:雙驅動驗證

package com.evan.jdbc.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class JDBCDriverTest {
    public static void main(String[] args) throws Exception {
        String url = "jdbc:mysql://localhost:3306/evan";
        String username = "root";
        String password = "root";
        String sql = "SELECT * FROM user";

        // 測試舊驅動類名
        // String className = "org.gjt.mm.mysql.Driver";
        
        // 測試新驅動類名 (推薦)
        String className = "com.mysql.jdbc.Driver";

        Class.forName(className);
        try (Connection conn = DriverManager.getConnection(url, username, password);
             PreparedStatement ps = conn.prepareStatement(sql);
             ResultSet rs = ps.executeQuery()) {
            
            while (rs.next()) {
                System.out.println("user表裡面有值: " + rs.getString("name"));
            }
        }
    }
}

四、Maven 依賴座標對照



    mysql
    mysql-connector-java
    5.1.49




    com.mysql
    mysql-connector-j
    8.0.33

注意:8.0 版本 Group ID 變更為 com.mysql,Artifact ID 為 mysql-connector-j,驅動類為 com.mysql.cj.jdbc.Driver。

五、升級遷移清單

  1. 更新 Maven/Gradle 依賴至 8.0 最新版
  2. 修改驅動類名:com.mysql.cj.jdbc.Driver
  3. 檢查 JDBC URL 參數:8.0 預設 useSSL=true、serverTimezone 建議顯式指定
  4. 測試時區處理、字元集 (utf8mb4)、SSL 連線
  5. 移除舊版 mysql-connector-java 依賴

理解驅動演進脈絡,避免在舊專案中盲目保留 org.gjt.mm.mysql.Driver,新專務必採用現代驅動類名,享受效能優化、安全修復與新功能支援。

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