zoukankan      html  css  js  c++  java
  • Spring JDBC模版以及三种数据库连接池的使用

    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。

  • 相关阅读:
    fatal: 'origin' does not appear to be a git repository
    Mac cpu过高问题分析及解决
    Java8新特性之日期和时间
    Allure自动化测试报告之修改allure测试报告logo
    Allure自动化测试报告之修改allure测试报告名称
    jmeter压测过程中报java.lang.NoClassDefFoundError: org/bouncycastle/jce/provider/BouncyCastleProvider
    java.security.InvalidKeyException: Illegal key size or default parameters
    scanf中的%[^ ]%*c格式
    fork,vfork和clone底层实现
    僵尸进程的产生原因和避免方法
  • 原文地址:https://www.cnblogs.com/xk920/p/9802979.html
Copyright © 2011-2022 走看看