一、spring-mybatis.xml文件中加入事务管理配置
二、在调用的方法上加上@Transactional注解(必须为public方法才行,不要捕捉异常,要让异常自动抛出,否则不能进行事务回滚。方法要写在服务层中在controller中无效)
@Transactional @Override public void transactionalTest(List<Tuser> list) { for(int i=0;i<list.size();i++){ /* if(i==0){ tuserMapper.insertSelective(list.get(i)); }else{ throw new RuntimeException(); }*/ if(i==0){ tuserMapper.updateByPrimaryKeySelective(list.get(i)); }else if(i==1){ //int j=1/0;//产生异常 }else{ tuserMapper.insertSelective(list.get(i)); } } }
三、测试方法(用JUnit进行测试)
@Test public void test4(){ List<Tuser> list = new ArrayList<Tuser>(); Tuser tuser = new Tuser(); tuser.setId("0ce64eea-98d6-462b-9982-4b0816126495"); tuser.setName("name1edit"); tuser.setPwd("0"); tuser.setSjh("111"); list.add(tuser); //int l = userService.insertSelective(tuser); //int i=1/0; Tuser tuser1 = new Tuser(); tuser1.setId(UUID.randomUUID().toString()); tuser1.setName("name2"); tuser1.setPwd("1"); tuser1.setSjh("222"); list.add(tuser1); Tuser tuser2 = new Tuser(); tuser2.setId(UUID.randomUUID().toString()); tuser2.setName("name3"); tuser2.setPwd("2"); tuser2.setSjh("333"); list.add(tuser2); //int l2 = userService.insertSelective(tuser1); userService.transactionalTest(list); }
简单记录下,仅供参考。