Spring JDBC模版以及三種數據庫連接池的使用
阿新 • • 發佈:2018-10-17
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模版以及三種數據庫連接池的使用