(1)数据源配置java
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property> <property name="url" value="jdbc:oracle:thin:@192.168.0.153:1521:OANET"></property> <property name="username"><value>gd_base</value></property> <property name="password"><value>11</value></property> <property name="maxActive"><value>80</value></property> <property name="minIdle"><value>5</value></property> <property name="initialSize"><value>10</value></property> <property name="maxWait"><value>60000</value></property> <property name="poolPreparedStatements"><value>true</value></property> <property name="maxOpenPreparedStatements"><value>20</value></property> <property name="validationQuery"><value>select 1 from dual</value></property> <property name="testWhileIdle"><value>true</value></property> <property name="testOnBorrow"><value>false</value></property> <property name="testOnReturn"><value>false</value></property> <property name="timeBetweenEvictionRunsMillis"><value>60000</value></property> <property name="minEvictableIdleTimeMillis"><value>300000</value></property> <property name="filters"><value>stat,wall</value></property> <!-- 打开 removeAbandoned 功能 --> <property name = "removeAbandoned" value = "true" /> <!-- 1800 秒,也就是 30 分钟 --> <property name = "removeAbandonedTimeout" value ="1800" /> <!-- 关闭 abanded 链接时输出错误日志 --> <property name = "logAbandoned" value = "true" /> </bean>
配置参数的解释:mysql
配置参数 | 参数含义 |
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"> | destroy-method="close"的做用是当数据库链接不使用的时候,就把该链接从新放到数据池中,方便下次使用调用.(数据库链接关闭) |
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property> | 使用的JDBC驱动的完整有效的java 类名 |
<property name="url" value="jdbc:oracle:thin:@192.168.0.153:1521:OANET"></property> | 传递给JDBC驱动的用于创建链接的URL oracle的jdbc链接方式:oci和thin |
<property name="username"><value>gd_base</value></property> | 传递给JDBC驱动的用于创建链接的用户名 |
<property name="password"><value>11</value></property> | 传递给JDBC驱动的用于创建链接的密码 |
<property name="maxActive"><value>80</value></property> | 最大链接数量 |
<property name="minIdle"><value>5</value></property> | 最小空闲链接数量 |
<property name="initialSize"><value>10</value></property> | 初始化链接数量 |
<property name="maxWait"><value>60000</value></property> | 超时等待时间以毫秒为单位 |
<property name="poolPreparedStatements"><value>true</value></property> | 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提高巨大,好比说oracle。在mysql下建议关闭。 |
<property name="maxOpenPreparedStatements"><value>20</value></property> | statement池可以同时分配的打开的statements的最大数量, 若是设置为0表示不限制 |
<property name="validationQuery"><value>select 1 from dual</value></property> | 用来检测链接是否有效的sql,要求是一个查询语句。若是validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会其做用。 |
<property name="testWhileIdle"><value>true</value></property> | 建议配置为true,不影响性能,而且保证安全性。申请链接的时候检测,若是空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测链接是否有效。 |
<property name="testOnBorrow"><value>false</value></property> | 申请链接时执行validationQuery检测链接是否有效,作了这个配置会下降性能。 |
<property name="testOnReturn"><value>false</value></property> | 归还链接时执行validationQuery检测链接是否有效,作了这个配置会下降性能 |
<property name="timeBetweenEvictionRunsMillis"><value>60000</value></property> | 在空闲链接回收器线程运行期间休眠的时间值,以毫秒为单位 |
<property name="minEvictableIdleTimeMillis"><value>300000</value></property> | 链接在池中保持空闲而不被空闲链接回收器线程 |
<property name="filters"><value>stat,wall</value></property> | 属性类型是字符串,经过别名的方式配置扩展插件,经常使用的插件有:监控统计用的filter:stat 日志用的filter:log4j 防护sql注入的filter:wall |
<property name = "removeAbandoned" value = "true" /> | removeAbandoned: 是否自动回收超时链接 |
<property name = "removeAbandonedTimeout" value ="1800" /> | removeAbandonedTimeout: 超时时间(以秒数为单位) |
<property name = "logAbandoned" value = "true" /> | 链接被泄露时是否打印 |
(2)Spring为咱们提供了SqlMapClientDaoSupportExtend支持类,全部DAO继承这个类,就会自动得到JdbcTemplate(前提是注入dataSource)oracle
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
JdbcTemplate主要提供下列方法:函数
一、execute方法:能够用于执行任何SQL语句,通常用于执行DDL语句;性能
二、update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;
三、query方法及queryForXXX方法:用于执行查询相关语句;
四、call方法:用于执行存储过程、函数相关语句。