Spring+SpringMVC+MyBatis+easyUI整合基础篇(七)JDBC url的连接参数
时间:2022-05-04
本文章向大家介绍Spring+SpringMVC+MyBatis+easyUI整合基础篇(七)JDBC url的连接参数,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在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
以上为整理的较为常用的参数,如果感兴趣可以去官网查阅一下其他参数。
- Ajax请求过程中显示“进度”的简单实现
- ASP.NET MVC基于标注特性的Model验证:ValidationAttribute
- 【深度学习系列】卷积神经网络详解(二)——自己手写一个卷积神经网络
- 区块链钱包mMoney向GooglePay、Applepay发起挑战
- Model验证系统运行机制是如何实现的?
- CentOS 6.8 部署zookeeper集群
- ASP.NET MVC基于标注特性的Model验证:DataAnnotationsModelValidator
- 使用容器进行应用程序路由
- MVVM(Knockout.js)的新尝试:多个Page,一个ViewModel
- ASP.NET MVC以ModelValidator为核心的Model验证体系: ModelValidatorProviders
- 我所理解的RESTful Web API [设计篇]
- 黑箱难题阻碍了深度学习的普及与发展
- iOS 转场动画探究(一)
- XCode中如何使用事务
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 情感分析数据预处理过程
- java的内部类和静态内部类(嵌套类)
- python爬取B站视频弹幕分析并制作词云
- mybatis扩展之自定义类型处理器处理枚举类型
- IMDB影评数据集预处理(使用word2vec)
- 【leetCode】使用两个栈搞一个队列day05
- bert训练代码
- mybatis文件映射之自定义返回结果集
- maven之第一个maven程序
- 【LeetCode】重建二叉树day04
- 【LeetCode】从尾到头反过来返回每个节点的值(用数组返回)day03
- mybatis文件映射之利用association进行关联查询(二)
- 【JUC】CountDownLatch你真的了解吗?
- mybatis动态sql之foreach补充(一)
- 【LeetCode】把字符串 s 中的每个空格替换成““%20””day02