Spring+SpringMVC+MyBatis+easyUI整

作者: 叫我十三吧 | 来源:发表于2017-03-30 10:08 被阅读152次

在java程序与数据库连接的编程中,mysql jdbc url格式如下:

jdbc:mysql://[host:port],[host:port].../[database][?参数名1][=参数值1][&参数名2][=参数值2]...

jdbc:mysql://localhost:3306/test?user=test&password=123456

刚好最近遇到一个数据库连接参数带来的问题,所以罗列一下几个较为重要的参数:

user 数据库用户名(用于连接数据库) 必要参数。

password 用户密码(用于连接数据库) 如果设置了密码的话同样为必要参数。

useUnicode 是否使用Unicode字符集,如果参数characterEncoding设置为utf-8或gbk,本参数值需设置为true,默认为false。

characterEncoding 允许用户自己设定数据库编码,指定字符编码,在程序与数据库交互时,如果数据的编码类型与数据库的编码类型不一致时,如程序中使用GBK,而数据库的数据类型为utf8,会出现传参无法识别导致无法得到预期的数据返回的问题。为了解决此问题,我们需要在URL上设置characterEncoding=utf8。
  示例代码:

        jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8

autoReconnect 当数据库连接异常中断时,是否自动重新连接, 默认值为false。

autoReconnectForPools 是否使用针对数据库连接池的重连策略, 默认值为false。
  以上两个参数都是设置是否允许连接断开后自动重连,jdbc中mysql的连接在长时间的连接后,可能会出现断连或者出现数据库突然宕机的状况。重启数据库服务可能也会继续报异常,只有重启应用重新连接才可以避免继续报错,为了解决这种问题,一般会设置此参数,这时可以使用这个参数来要求jdbc 驱动在发现数据库连接异常后会自动地重新连接。在使用数据连接池的情况,如使用DBCP或者c3p0连接池,应尽量使用autoReconnectForPools。

connectTimeout 和数据库服务器建立socket连接时的超时,单位:毫秒, 0表示永不超时。

socketTimeout socket操作(读写)超时,单位:毫秒, 0表示永不超时 。
  
JDBC使用socket与数据库连接,数据库并不对应用与数据库间的连接超时进行处理,JDBC的socket timeout在数据库被突然停掉或是发生网络错误(由于设备故障等原因)时十分重要。由于TCP/IP的结构原因,socket没有办法探测到网络错误,因此应用也无法主动发现数据库连接断开。如果没有设置socket timeout的话,应用在数据库返回结果前会无期限地等下去,这种连接被称为dead connection。为了避免dead connections,socket必须要有超时配置。socket timeout可以通过JDBC设置,socket timeout能够避免应用在发生网络错误时产生无休止等待的情况,缩短服务失效的时间。
  此参数为jdbc的过期时间设置,与mysql-server的过期时间不是同一参数。
  • socket连接时的timeout:通过Socket.connect(SocketAddress endpoint, int timeout)设置
  • socket读写时的timeout:通过Socket.setSoTimeout(int timeout)设置

示例代码:

jdbc:mysql://localhost:3306/test?connectTimeout=60000&socketTimeout=60000  
 

以上为整理的较为常用的参数,如果感兴趣可以去官网查阅一下其他参数,谢谢观看。

相关文章

  • Spring+SpringMVC+MyBatis+easyUI整

    作者:13GitHub:https://github.com/ZHENFENG13版权声明:本文为原创文章,未经允...

  • Spring+SpringMVC+MyBatis+easyUI整

    作者:13GitHub:https://github.com/ZHENFENG13版权声明:本文为原创文章,未经允...

  • Spring+SpringMVC+MyBatis+easyUI整

    日常啰嗦 前一篇文章《Spring+SpringMVC+MyBatis+easyUI整合优化篇(三)代码测试》讲了...

  • Spring+SpringMVC+MyBatis+easyUI整

    本文提要 最近写的几篇文章都是关于数据层优化方面的,这几天也在想还有哪些地方可以优化改进,结合日志和项目代码发现,...

  • Spring+SpringMVC+MyBatis+easyUI整

    阶段总结 又到了优化篇的收尾阶段了,这其实是一篇阶段总结性的文章,今天是4月29号,距离第一次发布博客已经两个月零...

  • Spring+SpringMVC+MyBatis+easyUI整

    redis简介 Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。Redis与其...

  • Spring+SpringMVC+MyBatis+easyUI整

    写在前面的话 这个问题看起来就显得有些萌,或者说类似的问题都有些不靠谱,世上哪有那么多一定的事情,做开发都不一定做...

  • Spring+SpringMVC+MyBatis+easyUI整

    原因 在今年4月份的时候写过一篇关于easyui整合UEditor的文章Spring+SpringMVC+MyBa...

  • Spring+SpringMVC+MyBatis+easyUI整

    日常啰嗦 这两天也一直在纠结这一篇文章该写什么东西,前面临时加的两篇文章就有些打乱了整体节奏,这一篇又想去写一下代...

  • Spring+SpringMVC+MyBatis+easyUI整

    日常啰嗦 本来这一篇和接下来的几篇是打算讲一下JDBC和数据库优化的,但是最近很多朋友加我好友也讨论了一些问题,我...

网友评论

    本文标题:Spring+SpringMVC+MyBatis+easyUI整

    本文链接:https://www.haomeiwen.com/subject/hqyuottx.html