博客 / 詳情

返回

jdbc 數據鏈接字符串裏的幾個參數使用總結

隨時間的推移,jdbc url 變得越來越長:

jdbc:mysql://127.0.0.1:3306/abc?useUnicode=true&useSSL=false&characterEncoding=utf8
&autoReconnect=true&zeroDateTimeBehavior=convertToNull
&allowMultiQueries=true&tinyInt1isBit=false

不是每一個人都清楚這些參數對應哪個坑,多一個少一個的後果是什麼?

參數名 默認值 項目裏取值 説明
tinyInt1isBit true false 可以通過向 jdbc-url 添加參數來控制行為: tinyInt1isBit=false JDBC URL 中的tinyInt1isBit=false 參數與MySQL 如何處理TINYINT(1) 數據類型有關。 在MySQL中,TINYINT數據類型可以存儲從-128到127(有符號)或0到255(無符號)的整數值。 當定義長度為 1 的 TINYINT 列(例如 TINYINT(1))時,它通常用於表示布爾值(true 或 false)。 默認情況下,當從 TINYINT(1) 列檢索數據時,MySQL 將其映射到 Java 布爾類型(true 或 false)。 如果tinyInt1isBit 設置為true(這是默認行為),驅動程序會將TINYINT(1) 列轉換為Java 布爾值。如果將tinyInt1isBit 設置為 false,則驅動程序會將 TINYINT(1) 列轉換為 Java 整數值而不是布爾值。 如果您想以整數(0 或 1)而不是布爾值的形式檢索該值,您可以將tinyInt1isBit=false 添加到您的 JDBC URL。下面是如何在 JDBC URL 中包含此參數的示例: jdbc:mysql://localhost:3306/mydb?tinyInt1isBit=false TableGear 生成代碼基於 jdbc 標準,符合上述使用規範
allowMultiQueries false true 可以在sql語句後攜帶分號,實現多語句執行。 可以執行批處理,同時發出多個SQL語句。 項目裏主要用於分頁方法的實現(ActiveRecord.findAllWithCount)
zeroDateTimeBehavior exception convertToNull 在操作值為0的timestamp類型時不能正確的處理,而是默認拋出一個異常,就是所見的: java.sql.SQLException: Cannot convert value ‘0000-00-00 00:00:00’ from column 7 to TIMESTAMP 可以用來配置出現這種情況時的處理策略,該屬性有下列三個屬性值: exception:默認值,即拋出SQL state [S1009]. Cannot convert value…的異常; convertToNull:將日期轉換成NULL值; round:替換成最近的日期即0001-01-01; 對於這類異常,可以考慮通過修改連接串,附加zeroDateTimeBehavior=convertToNull屬性的方式予以規避,例如: jdbc:mysql://localhost:3306/test?zeroDateTimeBehavior=convertToNull
autoReconnect false true 當數據庫連接異常中斷時,是否自動重新連接?
characterEncoding - utf8 對於 Connector/J 8.0.26 及更高版本: 連接初始化期間有兩個階段,其中設置字符編碼和排序規則。 預認證階段: 在此階段,客户端和服務器之間的字符編碼由 Connector/J 連接屬性的設置決定,優先順序如下: passwordCharacterEncoding connectionCollation characterEncoding 如果未設置上述任何屬性,則設置為 UTF8 (對應於 MySQL 服務器上的 utf8mb4 ) 身份驗證後階段: 在此階段,會話其餘部分中客户端和服務器之間的字符編碼由 Connector/J 連接屬性的設置確定,按以下優先順序排列: connectionCollation characterEncoding 如果未設置上述任何屬性,則設置為 UTF8 (對應於 MySQL 服務器上的 utf8mb4 ) 不要使用 Connector/J 發出查詢 SET NAMES,因為驅動程序不會檢測到查詢已更改字符集,並將繼續使用首次建立連接時配置的字符集。
useUnicode true true 對新驅動已無需設置
useSSL true false 已棄用:有關詳細信息,請參閲“sslMode”屬性描述。
                                                                                                                            |



參考鏈接

https://dev.mysql.com/doc/connector-j/en/connector-j-referenc...

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.