spring通过jdbcTemplate整合jdbc,在spring框架中管理数据源配置,并进行事务管理
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd "> <!-- 配置数据源 --> <bean class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" name="MydataSource"> <property name="driverClassName"> <value>oracle.jdbc.driver.OracleDriver</value> </property> <property name="url"> <value>jdbc:oracle:thin:@localhost:1521:xe</value> </property> <property name="username"> <value>abcuser</value> </property> <property name="password"> <value>123456</value> </property> </bean> <!-- 在jdbcTemplate模板中注入数据源 --> <bean name="jdbcTemelate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="MydataSource"></property> </bean> <!-- 配置事务管理器 --> <bean name="tranManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="MydataSource"></property> </bean> <!-- 配置事务拦截器 --> <bean name="tranInterceptor" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="transactionManager" ref="tranManager"></property> <property name="transactionAttributes"> <props> <!-- 事务传播属性,事务隔离级别, 方法属性值,控制提交回滚操作 (+Exception强制提交,-Exception回滚)--> <!-- <prop key="*">PROPAGATION_REQUIRED,,,</prop> --> <prop key="*">PROPAGATION_REQUIRED</prop> </props> </property> <property name="target" ref="service"></property> </bean> <!-- 配置dao层 --> <bean name="jdbcDao" class="com.sjdbc.dao.impl.JdbcTemplateDaoImpl"> <property name="jdbcTemplate" ref="jdbcTemelate"></property> </bean> <!-- 配置service层 --> <bean name="service" class="com.sjdbc.service.impl.UserServiceImpl"> <property name="dao" ref="jdbcDao"></property> </bean> </beans>
最终在dao层进行数据库交互时,使用jdbcTemplate
package com.sjdbc.dao.impl; import org.springframework.jdbc.core.JdbcTemplate; import com.sjdbc.bean.User; import com.sjdbc.dao.UserDao; public class JdbcTemplateDaoImpl implements UserDao{ private JdbcTemplate jdbcTemplate; public JdbcTemplate getJdbcTemplate() { return jdbcTemplate; } public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } public void saveOrUpdate(User user) throws Exception { // TODO Auto-generated method stub // String sql="insert into user values("+user.getId()+",'"+user.getName()+"')"; // jdbcTemplate.execute(sql); String sql="insert into users values(?,?)"; jdbcTemplate.update(sql,new Object[]{user.getId(),user.getName()}); } public User findByName(String name) throws Exception { // TODO Auto-generated method stub return null; } public void deleteUser(User user) throws Exception { // TODO Auto-generated method stub String sql="delete from users where id="+user.getId(); throw new RuntimeException("删除失败"); // jdbcTemplate.execute(sql); } }