spring中JDBC编程式事宜
spring中JDBC编程式事务
from: http://blog.****.net/yeson6/article/details/4954589
在spring采用纯JDBC进行数据库操作:
applicationContext.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <beans
- xmlns="http://www.springframework.org/schema/beans"
- 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.0.xsd">
- <!-- JDBC模板 -->
- <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
- <property name="dataSource">
- <ref local="dataSource"/>
- </property>
- </bean>
- <!-- 数据源 -->
- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
- <property name="driverClassName">
- <value>org.gjt.mm.MySQL.Driver</value>
- </property>
- <property name="url">
- <value>jdbc:mysql://localhost:3306/test</value>
- </property>
- <property name="username">
- <value>root</value>
- </property>
- <property name="password">
- <value>root</value>
- </property>
- </bean>
- <!--事务模板 -->
- <bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">
- <property name="transactionManager">
- <ref local="transactionManager"/>
- </property>
- </bean>
- <!-- jdbc事务管理器 -->
- <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
- <property name="dataSource">
- <ref local="dataSource"/>
- </property>
- </bean>
- </beans>
测试代码:
- package com.spring.jdbc;
- import org.springframework.beans.factory.BeanFactory;
- import org.springframework.beans.factory.xml.XmlBeanFactory;
- import org.springframework.core.io.ClassPathResource;
- import org.springframework.core.io.Resource;
- import org.springframework.jdbc.core.JdbcTemplate;
- import org.springframework.transaction.TransactionStatus;
- import org.springframework.transaction.support.TransactionCallbackWithoutResult;
- import org.springframework.transaction.support.TransactionTemplate;
- /**
- * JDBC编程式事务控制
- * @author nk
- *
- */
- public class JdbcTemplateTest {
- public static void main(String[] args) {
- Resource resource = new ClassPathResource("applicationContext.xml");
- BeanFactory factory = new XmlBeanFactory(resource);
- final JdbcTemplate jdbcTemplate = (JdbcTemplate)factory.getBean("jdbcTemplate");
- //不会被回滚
- jdbcTemplate.execute("insert into test(name,age) values('Tom2',20)");
- TransactionTemplate transactionTemplate = (TransactionTemplate)factory.getBean("transactionTemplate");
- //回调方法中的jdbc操作,如果未发生异常则会自动提交,发生异常则会回滚
- transactionTemplate.execute(new TransactionCallbackWithoutResult(){
- protected void doInTransactionWithoutResult(TransactionStatus status) {
- try {
- jdbcTemplate.execute("insert into test(name,age) values('Tom',20)");
- jdbcTemplate.execute("insert into test(name,ages) values('Tom',20)");
- } catch (Exception e) {
- status.setRollbackOnly(); //回滚
- System.out.println("回滚事务");
- }
- }
- });
- }
- }
//要获得Connection实例可以采用:
DataSourceUtils.getConnection(jdbcTemplate.getDataSource())