SSM 事务

Posted Sea_wxx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSM 事务相关的知识,希望对你有一定的参考价值。

配置文件

<!-- 定义事务管理器 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>

<tx:annotation-driven transaction-manager="transactionManager"/>

<!-- 定义事务策略 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<!--所有以query开头的方法都是只读的 -->
<tx:method name="query*" read-only="true" />
<tx:method name="get*" read-only="true" />
<tx:method name="find*" read-only="true" />
<tx:method name="select*" read-only="true" />
<!--其他方法使用默认事务策略 -->
<tx:method name="*" rollback-for="Throwable"/>
</tx:attributes>
</tx:advice>

<aop:config>
<aop:pointcut id="myPointcut" expression="execution(* cc.openkit..service.*.*(..))" />
<!--将定义好的事务处理策略应用到上述的切入点 -->
<aop:advisor advice-ref="txAdvice" pointcut-ref="myPointcut" />
</aop:config>


service层


@Service
public class AppConfigService extends BaseService<AppConfig>{

@Autowired
private AppConfigMapper appConfigMapper;

@Transactional(readOnly = false, propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
public void test() {

AppConfig appConfig = new AppConfig();
appConfig.setUpBaseId(AppUtil.uuid());
AppConfig appConfig1 = new AppConfig();
appConfig1.setUpBaseId(AppUtil.uuid());
Integer integer = this.saveSelect(appConfig);
Integer integer1 =this.saveSelect(appConfig1);
Integer num=integer + integer1;
if (num==2){
System.out.println(1);
throw new RuntimeException("出现异常了");
}else{
}
}
}

抛出异常事物回滚

以上是关于SSM 事务的主要内容,如果未能解决你的问题,请参考以下文章

片段事务中的实例化错误

BottomNavigationView 滞后于片段事务

SSM框架——以注解形式实现事务管理

SSM 三大框架---事务处理

SSM 事务

SSM-MyBatis-05:Mybatis中别名,sql片段和模糊查询加getMapper