1. 程式人生 > >Spring JDBC模版以及三種數據庫連接池的使用

Spring JDBC模版以及三種數據庫連接池的使用

mchange c3p0連接池 img 保存數據 pda 完成 png 方法 void

jar包版本有點亂,直接忽略版本號,將就一下。

技術分享圖片

這裏引了aop包是因為在spring3版本之後用模版對數據庫庫操作時會出現問題,但是不會報錯,也沒有提示。

所以這裏直接引入,以及之後會用到的DBCP與C3P0連接池jar包等。

接著先在spring配置文件中配置連接池和模版

這裏使用的是Spring的內置連接池

<!-- 引入屬性文件 -->
    <context:property-placeholder location="classpath:jdbc.properties"/>
    <!-- 配置Spring內置的連接池 -->
       <
bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <!-- 引入屬性文件的值 --> <property name="driverClassName" value="${jdbc.driverClassName}"></property> <property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property> <property name="password" value="${jdbc.password}"></property> </bean> <!-- 配置spring的JDBC的模版 --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"
> <property name="dataSource" ref="dataSource"></property> </bean>

也可以用第二種 數據庫連接池DBCP

  <!-- 引入屬性文件 -->
    <context:property-placeholder location="classpath:jdbc.properties"/>
    <!-- 配置DBCP連接池 -->
       <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <!-- 引入屬性文件的值 -->            
         <property name="driverClassName" value="${jdbc.driverClassName}"></property>
          <property name="url" value="${jdbc.url}"></property>
           <property name="username" value="${jdbc.username}"></property>
           <property name="password" value="${jdbc.password}"></property>
       </bean>
       <!-- 配置spring的JDBC的模版 -->
       <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
           <property name="dataSource" ref="dataSource"></property>
       </bean>

還可以用第三種 C3P0連接池

 <!-- 引入屬性文件 -->
    <context:property-placeholder location="classpath:jdbc.properties"/>
    <!-- 配置C3P0連接池 -->
       <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <!-- 引入屬性文件的值 -->            
         <property name="driverClass" value="${jdbc.driverClassName}"></property>
          <property name="jdbcUrl" value="${jdbc.url}"></property>
           <property name="user" value="${jdbc.username}"></property>
           <property name="password" value="${jdbc.password}"></property>
    </bean>
       <!-- 配置spring的JDBC的模版 -->
       <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
           <property name="dataSource" ref="dataSource"></property>
       </bean>

這裏註意C3P0連接池的屬性名與其他連接池的屬性名不一樣。

使用JDBC的模板:保存數據

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class jdbcDemo1 {
        @Resource(name="jdbcTemplate")
        private JdbcTemplate jdbcTemplate;
        
        @Test
        public void demo() {
            jdbcTemplate.update("insert into account values (null,?,?)","加一",10000d);
        }
}

這裏直接引用了@Resource(name="jdbcTemplate")完成了屬性的註入,是因為引入了test的jar包了,這種註入只能在單元測試中使用,否則要在普通類中使用這種方法,必須在spring配置中開啟<context:component-scan>註解掃描。

這裏順便總結一下兩種開啟註解掃描方式的異同點:

<context:annotation-config>:註解掃描是針對已經在Spring容器裏註冊過的Bean

<context:component-scan>:不僅具備了<context:annotation-config>的所有功能,還可以在指定的package下面掃描對應的bean。

Spring JDBC模版以及三種數據庫連接池的使用