歷經多年呼聲,微軟終於將 Microsoft JDBC Driver for SQL Server 發布至 Maven Central Repository。開發者無需再下載 sqljdbc4.jar 手動 mvn install:install-file,只需在 pom.xml 宣告依賴即可自動解析,極大簡化專案建構與 CI/CD 流程。
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>6.1.0.jre8</version>
</dependency>
artifactId 從 sqljdbc4 變更為 mssql-jdbc。6.1.0.jre7、6.1.0.jre8、6.1.0.jre11 等,按專案 JDK 選擇。# 每台機器、每次清理本地倉庫都要重跑 mvn install:install-file \ -DgroupId=com.microsoft.sqlserver \ -DartifactId=sqljdbc4 \ -Dversion=4.0 \ -Dpackaging=jar \ -Dfile=path/to/sqljdbc4.jar
IDE 仍需重啟刷新索引,團隊協作時新成員易遺漏步驟。
jdbc:sqlserver://localhost:1433;databaseName=MyDB;encrypt=true;trustServerCertificate=true
encrypt=true。com.microsoft.sqlserver.jdbc.SQLServerDriver(自動註冊,JDBC 4.0+ 無需 Class.forName)。Java java.util.Date 序列化為 JSON 時預設為時間戳或 ISO-8601 字串,.NET DateTime 直接序列化格式可能不匹配,導致 Java 反序列化偏移或失敗。
// C# 實體
public class Customer {
public string FirstName { get; set; }
public DateTime CreateTime { get; set; } // 預設 Kind=Unspecified
}
// 直接 JSON 序列化傳給 Java,Java 端 Date 欄位解析錯誤
var json = $"{{\"firstName\":\"{c.FirstName}\",\"createTime\":\"{c.CreateTime.ToUniversalTime():yyyy-MM-ddTHH:mm:ss}\"}}";
var settings = new JsonSerializerSettings {
DateFormatString = "yyyy'-'MM'-'dd'T'HH':'mm':'ss",
DateTimeZoneHandling = DateTimeZoneHandling.Utc // 強制轉 UTC
};
var json = JsonConvert.SerializeObject(customer, settings);
Java 端使用 Jackson @JsonFormat(pattern="yyyy-MM-dd'T'HH:mm:ss", timezone="UTC") 對應接收。
mssql-jdbc 依賴,刪除本地手動安裝腳本,簡化建構。spring.datasource.url=jdbc:sqlserver://...。