(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方法:用於執行存儲過程、函數相關語句。