概要
在Java Web项目中连接数据库是最常用到的,其中最熟悉的就是Mysql连接(及连接池)各属性的配置,其中连接的url属性的参数种类繁多,今天给大家介绍主要url的参数说明,以druid连接池配置信息举例如:
<property name="jdbcDriver" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti" />
<property name="jdbcUsername" value="root" />
<property name="jdbcPassword" value="123456" />
参数说明
- user 数据库用户名(用于连接数据库)
- passWord 用户密码(用于连接数据库)
- useUnicode 是否使用Unicode字符集,如果参数characterEncoding设置为gb2312或gbk,本参数值必须设置为true
- characterEncoding 当useUnicode设置为true,给定编码,常用utf8,默认是:autodetect
- autoReconnect 当数据库连接异常中断时,是否自动重新连接?
- serverTimezone 连接数据库的时区信息
- autoReconnectForPools 是否使用针对数据库连接池的重连策略
- maxReconnects autoReconnect设置为true时,重试连接的次数
- createDatabaseIfNotExist=true 连接数据库时如果没有库名自动创建
- initialTimeout autoReconnect设置为true时,两次重连之间的时间间隔,单位:秒
- connectTimeout 和数据库服务器建立socket连接时的超时,单位:毫秒。 0表示永不超时,
- socketTimeout socket操作(读写)超时,单位:毫秒。 0表示永不超时
- failOverReadOnly 自动重连成功后,连接是否设置为只读?
- zeroDateTimeBehavior "exception", "round" and "convertToNull",默认exception
- maxRows 返回的最大行数,默认-1,不限制
- autoDeserialize driver自动发现,并行化存储blob字段
- allowMultiQueries 允许一个statement执行多个用;分割的sql,默认false
- useSSL 连接MySQL 5.5.45+, 5.6.26+ or 5.7.6+默认为true,之前低版本为false
如果你已经升级好了mysql-connector,其中的characterEncoding=utf8可以被自动被识别为utf8mb4(当然也兼容原来的utf8),而autoReconnect配置强烈建议配上。
对应中文环境,通常mysql连接URL可以设置为:
jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false
在使用数据库连接池的情况下,最好设置如下两个参数:
autoReconnect=true&failOverReadOnly=false
注意:在xml配置文件中,url中的&符号需要转义成&。比如直接配置再数据源的配置文件中写属性值的话,需要改成如下示例:
jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=utf8&autoReconnect=true
因此推荐大家还是把数据库连接信息写到配置文件中(jdbc.properties)中,就可以安全写“&”作为连接参数了。
(完)