jdbc.properties查询中文乱码,&不能出现在jdbc.properties文件中

bc.properties查询中文乱码,&不能出现在jdbc.properties文件中
最近项目出现了一个比较神奇的问题,最开始数据库连接密码写在了applicationContext.xml文件,数据库查询相安无事。。。。。
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
        <property name="driverClassName">
            <value>com.mysql.jdbc.Driver</value>
        </property>
        <property name="url">
            <value>jdbc:mysql://localhost:3306/fibo_service?useUnicode=true&amp;characterEncoding=UTF-8</value>
        </property>
        <property name="username">
            <value>root</value>
        </property>
        <property name="password">
            <value>1234</value>
        </property>
    </bean>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
现在把他拿到了jdbc.properties,外边统一管理。。。。。然后查询时中文就GG了。
错误的配置:
mysql.jdbc.driverClassName=com.mysql.jdbc.Driver
mysql.jdbc.url=jdbc:mysql://localhost:3306/zqhl-reg?useUnicode=true&amp;characterEncoding=UTF-8
mysql.jdbc.username=root
mysql.jdbc.password=1qaz4321
  • 1
  • 2
  • 3
  • 4
在往外抽取时偷了个懒,直接把数据库连接复制了出去,找了半天才发现是&amp;的锅。
正确的配置:

mysql.jdbc.url=jdbc:mysql://localhost:3306/zqhl-reg?useUnicode=true&characterEncoding=UTF-8

原因:&amp;是xml里面的转义字符,在jdbc.properties文件中不能使用直接使用&就好了。

MySQL JDBC URL中几个重要参数说明

jdbc:mysql://[host:port],[host:port].../[database][?参数名1][=参数值1][&参数名2][=参数值2]...
  • 1
参数名称参数说明缺省值最低版本要求
user数据库用户名 所有版本
password用户密码(用于连接数据库) 所有版本
useUnicode是否使用Unicode字符集,如果参数characterEncoding设置为gb2312或gbk,本参数值必须设置为truefalse1.1g
characterEncoding当useUnicode设置为true时,指定字符编码。比如可设置为gb2312或gbk,utf8false1.1g
autoReconnect当数据库连接异常中断时,是否自动重新连接?false1.1
autoReconnectForPools是否使用针对数据库连接池的重连策略false3.1.3
failOverReadOnly自动重连成功后,连接是否设置为只读?true3.0.12
maxReconnectsautoReconnect设置为true时,重试连接的次数31.1
initialTimeoutautoReconnect设置为true时,两次重连之间的时间间隔,单位:秒21.1
connectTimeout和数据库服务器建立socket连接时的超时,单位:毫秒。 0表示永不超时,适用于JDK 1.4及更高版本03.0.1
socketTimeoutsocket操作(读写)超时,单位:毫秒。 0表示永不超时03.0.1
对应中文环境,通常mysql连接URL可以设置为:
jdbc:mysql://localhost:3306/test?user=root&password=&useUnicode=true&characterEncoding=gbk&autoReconnect=true&failOverReadOnly=false
  • 1
在使用数据库连接池的情况下,最好设置如下两个参数:
autoReconnect=true&failOverReadOnly=false

需要注意的是,在xml配置文件中,url中的&符号需要转义成&。比如在tomcat的server.xml中配置数据库连接池时,mysql jdbc url样例如下:
jdbc:mysql://localhost:3306/test?user=root&amp;password=&amp;useUnicode=true&amp;characterEncoding=gbk
&amp;autoReconnect=true&amp;failOverReadOnly=false
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

参考:https://www.cnblogs.com/yokoboy/archive/2013/03/01/2939315.html

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在SSM引入jdbc.properties文件通常是用来配置数据源的相关信息,包括数据库的连接地址、用户名、密码等。一般情况下,jdbc.properties文件应该在spring.xml文件进行配置。 在spring.xml文件,可以使用PropertyPlaceholderConfigurer来加载jdbc.properties文件,将配置信息注入到Bean,以便在应用程序使用。示例代码如下: ```xml <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:jdbc.properties"/> </bean> ``` 然后在配置数据源的Bean,可以使用${key}的方式来引用jdbc.properties文件的配置项。示例代码如下: ```xml <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driverClassName}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </bean> ``` 其,${jdbc.driverClassName}、${jdbc.url}、${jdbc.username}和${jdbc.password}就是jdbc.properties文件定义的配置项。 至于mybatis-config.xml文件,它是用来配置MyBatis框架的相关信息,包括插件、别名、类型处理器等。虽然在mybatis-config.xml文件也可以引用jdbc.properties文件的配置项,但是通常情况下,这些配置项的值并不会被MyBatis框架直接使用,而是交由数据源进行处理。因此,在SSM,我们通常将jdbc.properties文件的配置放在spring.xml文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值