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。