原文地址:http://czj4451.iteye.com/blog/2037759
mybatis与spring结合后,事务管理更加方便,这里介绍使用transactionnal的方式,有错的的地方,希望大家指出。
1. 和Spring集成后,使用Spring的事务管理:
a. @Transactional方式:
在类路径下创建beans-da-tx.xml文件,在applicationContext-resources.xml的基础上加入事务配置:
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
服务类:
@Service("userService")
publicclass UserService {
@Autowired
IUserMapper mapper;
publicint batchUpdateUsersWhenException() {// 非事务性
User user =new User(9,"Before exception");
int affectedCount = mapper.updateUser(user);// 执行成功
User user2 =new User(10,"After exception");
int i =1 /0;// 抛出运行时异常
int affectedCount2 = mapper.updateUser(user2);// 未执行
if (affectedCount ==1 && affectedCount2 ==1) {
return1;
}
return0;
}
@Transactional
publicint txUpdateUsersWhenException() {// 事务性
User user =new User(9,"Before exception");
int affectedCount = mapper.updateUser(user);// 因后面的异常而回滚
User user2 =new User(10,"After exception");
int i =1 /0;// 抛出运行时异常,事务回滚
int affectedCount2 = mapper.updateUser(user2);// 未执行
if (affectedCount ==1 && affectedCount2 ==1) {
return1;
}
return0;
}
}