配置文件,直接配置到spring-mybatis.xml:
<!--事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dynamicDataSource"/>
</bean>
<!-- 使用注解事务,需要添加Transactional注解属性 -->
<tx:annotation-driven proxy-target-class="true" transaction-manager="transactionManager"/>
proxy-target-Class=true/false,
关于它记住这句话就可以了:高版本spring自动根据运行类选择JDK或CGLIB代理,我们无需设置proxy-target-class属性,JDK动态代理是模拟接口实现的方式,cglib是模拟子类继承的方式,一般采用前者,因为前者效率高。后者不建议使用。
try catch 使用示例:
注:所有的注解使用都是到serviceImpl方法
第一种抛出异常throw Exception 代码示例如下:
@Override
@Transactional(rollbackFor = Exception.class)
public ResultJson spsave(student student) {
long saveF = 0;
try {
dao.save(student);
} catch (Exception ex) {
throw ex;
}
return Constants.getSuccessMsg();
}
第二种手动处理异常:
@Override
@Transactional(rollbackFor = Exception.class)
public ResultJson spsave(student student) {
long saveF = 0;
try {
dao.save(student);
} catch (Exception ex) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return Constants.getSuccessMsg();
}
嵌套的暂时不做扩展记住一句话:父子可以用,子父行不通、
闭坑指南:
<!-- 这个一定要放在最上面,挨着properties放否则不生效 -->
<context:component-scan base-package=“包路径”/>
以上没做扩展,觉得有用帮忙点赞,感谢啦!