DBCP2的详细配置

#就是使用JDBC跟你的数据库连接的时候,你的JDBC版本与MySQL版本不兼容,MySQL的版本更高一些,在连接语句后加上“useSSL=‘true’” ,就可以连接到数据库了。更高版本。
#添加的作用是:指定字符的编码、解码格式。
#mysql数据库用的是gbk编码,而项目数据库用的是utf-8编码。这时候如果添加了useUnicode=true&characterEncoding=UTF-8 ,那么作用有如下两个方面:
#1. 存数据时:
#数据库在存放项目数据的时候会先用UTF-8格式将数据解码成字节码,然后再将解码后的字节码重新使用GBK编码存放到数据库中。
#2.取数据时:
#在从数据库中取数据的时候,数据库会先将数据库中的数据按GBK格式解码成字节码,然后再将解码后的字节码重新按UTF-8格式编码数据,最后再将数据返回给客户端。
#添加的作用是:指定字符的编码、解码格式。
jdbc.url=jdbc:mysql://localhost:3306/root?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8&useUnicode=true
jdbc.username=root
jdbc.password=root
jdbc.driverClassName=com.mysql.cj.jdbc.Driver

连接数据库都必须要有数据连接,一般Spring中采用DBCP配置源,通过在bean.xml中配置相应的数据配置,就可以连接数据库了,可以看一下以下相关配置:

<bean id="jdbc" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" >
    	<property name="locations" value="/WEB-INF/jdbc.properties"/>    
    </bean>
    <bean id="dataSource"  class="org.apache.commons.dbcp.BasicDataSource"  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}" />    
      <property name="testOnBorrow" value="false" />      
        <property name="testWhileIdle" value="true" />   
          <!-- 连接池启动时的初始值 -->
	  <property name="initialSize" value="10" />
	  <!-- 连接池的最大值 -->
	  <property name="maxActive" value="100" />
	  <!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 -->
	  <property name="maxIdle" value="50" />
	  <!-- 最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->
	  <property name="minIdle" value="10" />
	  <!--#给出一条简单的sql语句进行验证-->
	  <property name="validationQuery" value="select getdate()" />
	  <!--#在取出连接时进行有效验证-->
	  <property name="removeAbandonedTimeout" value="120" />
	  <property name="removeAbandoned" value="true" />
	  <!-- #运行判断连接超时任务的时间间隔,单位为毫秒,默认为-1,即不执行任务。 -->
	  <property name="timeBetweenEvictionRunsMillis" value="3600000" />
	  <!-- #连接的超时时间,默认为半小时。 -->
	  <property name="minEvictableIdleTimeMillis" value="3600000" />  
	</bean> 
	<bean id="JdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"/>
    </bean>

以上的配置,就直接可以使用JdbcTemplate来做数据库操作了。

下面是一个详细的配置表:


常用链接配置:      注意 :参数user/password将被明确传递,所以不需要包括在这里。

参数  描述
username 传递给JDBC驱动的用于建立连接的用户名
password 

 传递给JDBC驱动的用于建立连接的密码 

url    传递给JDBC驱动的用于建立连接的URL
driverClassName  使用的JDBC驱动的完整有效的java 类名
connectionProperties 当建立新连接时被发送给JDBC驱动的连接参数,格式必须是 [propertyName=property;]*

 

Java数据库连接有“8小时问题”,所以destroy-method="close"一定要加上。“8小时问题”是指一个连接空闲8小时数据库会自动关闭,而数据源并不知道。 高并发下,可以testOnBorrow设置false,testWhileIdle设置为true,这样就会定时对后台空链接进行检测发现无用连接就会清除掉,不会每次都去都去检测是否8小时的空链接。