springboot事务使用
1、事务传播-Propagation
/*例如:Propagation.REQUERED
* 属性:REQUIRED
* SUPPORTS
* MANDATORY
* REQUIRES_NEW
* NOT_SUPPORTED
* NEVER
* NESTED
* */
属性:
REQUIRED:使用当前的事务,如果没有事务,则自己新建一个事务。子方法必须运行一个事务,如果父方法有事务,则加入这个事务形成一个整体。
SUPPORTS:如果当前有事务则使用事务,如果当前没有事务则不使用事务。
MANDATORY:该属性必须存在一个事务,如果不存在,则抛出异常。
REQUIRES_NEW:如果当前有事务则挂起该事务,并且创建一个新事务自己使用。
NOT_SUPPORTED:如果当前有事务,则把事务挂起,则自己不使用事务去操作数据库。
NEVER:如果当前有事务存在,则抛出异常。
2、开启事务,使用@Transactional 注解
@Transactional(propagation = Propagation.REQUIRED )
@Override
public void queryUser() {
saveUser1();
int a = 1 / 0;
saveUser2();
}
public void saveUser1(){
Users users=new Users();
users.setTsId("TsId3");
users.setTsCash(100);
users.setTsKey("TsKey1");
usersMapper.insert(users);
}
public void saveUser2(){
Users users=new Users();
users.setTsId("TsId4");
users.setTsCash(200);
users.setTsKey("TsKey2");
usersMapper.insert(users);
}
开启事务后,程序报错后,事务回滚