话不多说直接上代码 controller代码 @Controller @RequestMapping("/test") public class testcontroller { private static final Logger logger = Logger.getLogger(testcontroller.class); @Autowired private TestService testService; @RequestMapping("/test1") @ResponseBody public ResultMsg test() { ResultMsg resultMsg; try{ testService.test(); }catch (Exception e){ logger.error("插入失败",e); return new ResultMsg(); } return resultMsg = new ResultMsg(RetStatusEnum.SUCCESS.getRetCode(), RetStatusEnum.SUCCESS.getRetMsg(), null); } }
Service 代码
@Service public class TestService { @Autowired private AicaseNodeCaseDao aicaseNodeCaseDao; @Autowired private AicaseNodeCaseDirDao aicaseNodeCaseDirDao; //注意此处导报要正确使用spring的包,Javax也有一个同样的注解,别倒错包了!!
//import org.springframework.transaction.annotation.Transactional;
//2.在service实现类中的方法上添加注解@Transactional //当方法抛出异常时,状态回滚,如果catch异常,则回滚无效,可以先catch异常让后再抛出异常,同样可以生效 //此处如果有多个事务管理器可以这样写 @Transactional("xxx")xxx是事务管理器的bean id 如果只有一个不用写也可以
<!-- (事务管理)transaction manager, use JtaTransactionManager for global tx --> <bean id="adapterTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> <qualifier value="transactionManagerAdapter" /><!-- java @Transactional("transactionManagerAdapter") --> </bean> <!-- 使用annotation定义事务 --> <tx:annotation-driven transaction-manager="adapterTransactionManager" />
@Transactional public void test() { try { AicaseNodeCase aicaseNodeCase = new AicaseNodeCase(); aicaseNodeCase.setCreator("tomandjerry"); aicaseNodeCase.setCaseDescr("tomcat"); aicaseNodeCase.setCaseId("111111111"); aicaseNodeCase.setCaseIdentifier("00010008"); aicaseNodeCaseDao.insertCase(aicaseNodeCase); AicaseNodeCaseDir aicaseNodeCaseDir = new AicaseNodeCaseDir(); aicaseNodeCaseDir.setDirName("tomcat"); //注意此处casedirid 设置长度为32,故意让程序抛异常来测试 aicaseNodeCaseDir.setCaseDirId("1111111111119999999999999999999999999999999999999999999999999"); aicaseNodeCaseDir.setDirIdentifier("00010008"); aicaseNodeCaseDirDao.insertDir(aicaseNodeCaseDir); }catch (Exception e){ throw e; } } }