applicationContext.xml 配置如下
<!-- 数据源配置,使用应用内的DBCP数据库连接池 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<context:annotation-config />
<context:component-scan base-package="com.base" />
<!-- 数据事务配置 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 使用annotation定义事务 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
<bean id="db_default"
class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
java代码如下:
JdbcTemplate jtc=(JdbcTemplate) SpringBeanUtil.getBean("db_default");
public void execute(Tuple input, BasicOutputCollector collector) {
Backup("258");
}
@Transactional(rollbackFor=Exception.class)
public void Backup(String pkId){
String sql1="insert ....";
String sql2="insert ....";
jct.update(sql1, param);
jct.update(sql2, param);
}
sql2发生错误时,sql1的记录还是插入了,没有回滚,帮忙看看哪里有问题?
------解决思路----------------------
把那个要回滚的方法放到service中!!!!!