<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <!-- 使用spring提供的PropertyPlaceholderConfigurer讀取數據庫配置信息.properties --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <!-- 這裏的classpath能夠認爲是項目中的src-屬性名是 locations, 使用子標籤<list></list>能夠指定多個數據庫的配置文件,這裏指定了一個 --> <value>classpath:resource/config/jdbc.properties</value> </list> </property> </bean> </beans>
此時的數據庫配置文件項目路徑是這樣的 java
用法2: spring
讀取數據庫的配置文件還可使用下面的方式
sql
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>/WEB-INF/config_test/jdbc.properties</value> </list> </property> </bean>
此時jdbc.properties文件的位置以下圖所示 數據庫
.properties配置文件還能夠有多個,這裏在<list></list>標籤中指定了2個數據的配置文件 apache
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:jdbc.properties</value> <value>/WEB-INF/config_test/jdbc.properties</value> </list> </property> </bean>
classpath:jdbc.properties對應的文件位置是: oracle
文件內容是:配置的是sqlserver的鏈接信息
sqlserver
sqlserver.username=sa sqlserver.password=sqlserver sqlserver.url=jdbc\:jtds\:sqlserver\://localhost\:1433/J2EE sqlserver.driver=net.sourceforge.jtds.jdbc.Driver
/WEB-INF/config_test/jdbc.properties對應的文件位置是 測試
文件內容是:配置的是oracle的鏈接信息 url
jdbc.driverClassName=oracle.jdbc.driver.OracleDriver jdbc.url=jdbc:oracle:thin:@127.0.0.1 :1521:orcl jdbc.username=jxbms jdbc.password=jxbms
這樣數據庫的配置信息被讀取以後,在建立datasource的時候就可使用了 spa
下面鏈接oracle 使用apache的dbcp 數據源
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName"> <value>${jdbc.driverClassName}</value> </property> <property name="url"> <value>${jdbc.url}</value> </property> <property name="username"> <value>${jdbc.username}</value> </property> <property name="password"> <value>${jdbc.password}</value> </property> <property name="maxActive"> <value>100</value> </property> <property name="maxIdle"> <value>3</value> </property> <property name="maxWait"> <value>-1</value> </property> <property name="defaultAutoCommit"> <value>false</value> </property> </bean>
下面鏈接sqlserver數據庫使用的是c3p0數據源
<bean id="dataSource_oracle" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close" > <property name="driverClass" value="${jdbc.driverClassName}" /> <property name="jdbcUrl" value="${jdbc.url}" /> <property name="user" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </bean>
使用dbcp數據源使人鬱悶的事,使用dbcp和spring提供的JdbcTemplate操做數據庫是查詢是能夠的
可是執行update、delete、insert into 操做時,數據庫中的數據沒有變化
從網上查詢了不少的資料,都無果。最後偶然看到網上有人說,dbcp數據源的事務不會自動提交,
當改爲c3p0數據源後好了
隨後認爲這下終於能夠鬆口氣了,誰知道天不遂人願。當更換一張表進行測試,數據庫中的數據仍是沒有變化,難道c3p0數據源也很差使,
當再次通過代碼的折磨以後,
最終發現改動測試java文件,不在一個項目中,把其餘的項目關閉就行了
當文檔寫到這裏時,忽然發現oracle使用的dbcp數據源有這一項配置
<property name="defaultAutoCommit"> <value>false</value> </property>
原來dbcp數據源事務的自動提交功能被關閉了
立刻把事務自動提交改爲true 進行測試,一切ok,(^ _ ^)