Dao測試類java
@Test public void test() throws Exception { //獲取上下文對象 ApplicationContext ctx = new ClassPathXmlApplicationContext("/spring-config/applicationContext.xml"); //獲取dataSource對象 DataSource dataSource=ctx.getBean("dataSource",DataSource.class); //定義sql語句 String sql="select * from micro_message"; //獲取數據庫鏈接對象 Connection connection=dataSource.getConnection(); //獲取數據庫語句執行對象 Statement stm=connection.createStatement(); //獲取查詢集合 ResultSet rs=stm.executeQuery(sql); //打印結果集 while(rs.next()) { System.out.println("用戶名爲:"); System.out.println(rs.getString(2)); } }
jdbc.propertiesmysql
jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/test jdbc.username=root jdbc.password=root
在applicationContext.xml中配置jdbc.propertiesspring
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath*:jdbc.properties</value> </list> </property> </bean>
第一種:使用spring自帶的DriverManagerDataSource 配置文件以下:sql
<bean name="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="${jdbc.driverClassName}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </bean>
第二種數據庫
C3P0 數據源須要使c3p0的核心jar包。通常在下載hibernate的時候都會自帶一個: 在hibernate-release-4.3.0.Final\lib\optional\c3p0路徑下找到的。 apache
要注意的是在bean的property的name屬性和其餘幾種方式會有所不一樣:緩存
<bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" > <property name="driverClass" value="${jdbc.driverClassName}" /> <property name="jdbcUrl" value="${jdbc.jdbcUrl}" /> <property name="user" value="${jdbc.user}" /> <property name="password" value="${jdbc.password}" /> <!-- 鏈接池信息 當鏈接池中的鏈接用完時,C3P0一次性建立新鏈接的數目 --> <property name="acquireIncrement" value="${c3p0.acquireIncrement}" /> <!-- 初始化時建立的鏈接數,應在minPoolSize與maxPoolSize之間取值。默認爲3;--> <property name="initialPoolSize" value="${c3p0.initialPoolSize}" /> <!-- 最大空閒時間,超過空閒時間的鏈接將被丟棄。爲0或負數則永不丟棄。默認爲0;--> <property name="maxIdleTime" value="${c3p0.maxIdleTime}" /> <!-- 鏈接池中保留的最小鏈接數。默認爲15 --> <property name="minPoolSize" value="${c3p0.minPoolSize}" /> <!-- 鏈接池中保留的最大鏈接數。默認爲15; --> <property name="maxPoolSize" value="${c3p0.maxPoolSize}" /> <!-- JDBC的標準參數,用以控制數據源內加載的PreparedStatement數量。但因爲預緩存的Statement屬 於單個Connection而不是整個鏈接池。因此設置這個參數須要考慮到多方面的因素,若是maxStatements與 maxStatementsPerConnection均爲0,則緩存被關閉。默認爲0; --> <property name="maxStatements" value="${c3p0.maxStatements}" /> <!-- 鏈接池內單個鏈接所擁有的最大緩存Statement數。默認爲0; --> <property name="maxStatementsPerConnection" value="${c3p0.maxStatementsPerConnection}"/> </bean>
第三種:app
使用apache的dbcp插件鏈接數據庫 須要下載的jar包:commons-dbcp.jar,commons-pool.jar,commons-collection.jar框架
spring的配置文件中以下:測試
<bean name="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${jdbc.driverClassName}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </bean>
第四種:
使用hibernate數據源 須要hiberante核心jar包,我使用的hibernate1的版本是hibernate-release-4.3.0.Final 目前三大框架較流行,spring通常與hiberante作搭檔,數據庫鏈接方式寫在hiberante的配置文件中,在spring管理hibernate中的配置文件中,直接讀取hibernate核心配置文件便可。在使用hibernate鏈接數據庫的時候須要讀取hibernate.cfg.xml的配置文件和相應的實體類