默认情况下,在集成mybatis后springboot是没有开启事务的,我们需要手动开启
开启方法:在对应的类名上或者方法名上添加上@Transactional注解即可
测试过程:
我们在数据库中建立了一张表,这里用年龄来测试的
在service中编写一个接口并实现方法
这里有两个用户,其中一个用户年龄减去,另外一个年龄则加上相应的数字,中间发生一个异常,经过测试发现,当没有@Transactional注解的时候,数据库中前面一个用户的年龄减掉了一些数字,而后面一个用户的年龄却没有对应的加上,所以这里的数据是没有完整性的。当我们对此方法开启事务后可以发现,当发生异常的时候,整个数据的操作都没有生效
@Override
@Transactional(rollbackFor = Exception.class)
public void testTranslation(User form, User to, Integer number){
form.setUserAge(form.getUserAge()-number);
to.setUserAge(to.getUserAge()+number);
userMapper.updateByPrimaryKeySelective(form);
int s = 1 /0;
userMapper.updateByPrimaryKeySelective(to);
}