随时间的推移,jdbc url 变得越来越长:

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

不是每一个人都清楚这些参数对应哪个坑,多一个少一个的后果是什么?

参数名默认值项目里取值说明
tinyInt1isBittruefalse可以通过向 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 标准,符合上述使用规范
allowMultiQueriesfalsetrue可以在sql语句后携带分号,实现多语句执行。 可以执行批处理,同时发出多个SQL语句。 项目里主要用于分页方法的实现(ActiveRecord.findAllWithCount)
zeroDateTimeBehaviorexceptionconvertToNull在操作值为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
autoReconnectfalsetrue当数据库连接异常中断时,是否自动重新连接?
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,因为驱动程序不会检测到查询已更改字符集,并将继续使用首次建立连接时配置的字符集。
useUnicodetruetrue对新驱动已无需设置
useSSLtruefalse已弃用:有关详细信息,请参阅“sslMode”属性描述。
                                                                                                                            |



参考链接

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


Yujiaao
12.7k 声望4.7k 粉丝

[链接]