spring中JDBC编程式事务

from:  http://blog.csdn.net/yeson6/article/details/4954589

 

spring采用纯JDBC进行数据库操作:

applicationContext.xml

 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans  
  3.  xmlns="http://www.springframework.org/schema/beans"  
  4.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">  
  6.  <!-- JDBC模板 -->  
  7.  <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">  
  8.           <property name="dataSource">  
  9.                    <ref local="dataSource"/>          
  10.           </property>  
  11.  </bean>  
  12.  <!-- 数据源 -->  
  13.  <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">  
  14.           <property name="driverClassName">  
  15.                    <value>org.gjt.mm.MySQL.Driver</value>  
  16.           </property>  
  17.           <property name="url">  
  18.                    <value>jdbc:mysql://localhost:3306/test</value>  
  19.           </property>  
  20.           <property name="username">  
  21.                    <value>root</value>                  
  22.           </property>  
  23.           <property name="password">          
  24.                    <value>root</value>  
  25.           </property>  
  26.  </bean>  
  27.  <!--事务模板 -->  
  28.  <bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">  
  29.           <property name="transactionManager">  
  30.                    <ref local="transactionManager"/>  
  31.           </property>  
  32.  </bean>  
  33.  <!-- jdbc事务管理器 -->  
  34.  <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
  35.           <property name="dataSource">          
  36.            <ref local="dataSource"/>  
  37.   </property>  
  38.  </bean>  
  39. </beans>  

 

测试代码:

 
  1. package com.spring.jdbc;  
  2.   
  3. import org.springframework.beans.factory.BeanFactory;  
  4. import org.springframework.beans.factory.xml.XmlBeanFactory;  
  5. import org.springframework.core.io.ClassPathResource;  
  6. import org.springframework.core.io.Resource;  
  7. import org.springframework.jdbc.core.JdbcTemplate;  
  8. import org.springframework.transaction.TransactionStatus;  
  9. import org.springframework.transaction.support.TransactionCallbackWithoutResult;  
  10. import org.springframework.transaction.support.TransactionTemplate;  
  11.   
  12. /** 
  13.  * JDBC编程式事务控制 
  14.  * @author nk 
  15.  * 
  16.  */  
  17. public class JdbcTemplateTest {  
  18.          public static void main(String[] args) {  
  19.                   Resource resource = new ClassPathResource("applicationContext.xml");  
  20.                   BeanFactory factory = new XmlBeanFactory(resource);                  
  21.                   final JdbcTemplate jdbcTemplate = (JdbcTemplate)factory.getBean("jdbcTemplate");  
  22.                   //不会被回滚  
  23.                   jdbcTemplate.execute("insert into test(name,age) values('Tom2',20)");  
  24.                   TransactionTemplate transactionTemplate = (TransactionTemplate)factory.getBean("transactionTemplate");  
  25.                   //回调方法中的jdbc操作,如果未发生异常则会自动提交,发生异常则会回滚  
  26.                   transactionTemplate.execute(new TransactionCallbackWithoutResult(){          
  27.                            protected void doInTransactionWithoutResult(TransactionStatus status) {  
  28.                                     try {  
  29.                                              jdbcTemplate.execute("insert into test(name,age) values('Tom',20)");  
  30.                                              jdbcTemplate.execute("insert into test(name,ages) values('Tom',20)");  
  31.                                     } catch (Exception e) {  
  32.                                              status.setRollbackOnly();  //回滚  
  33.                                              System.out.println("回滚事务");                  
  34.                                     }          
  35.                            }  
  36.                   });  
  37.          }  
  38. }  
 

 

//要获得Connection实例可以采用:
DataSourceUtils.getConnection(jdbcTemplate.getDataSource())

猜你喜欢

转载自angie.iteye.com/blog/2331686