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); }
开启事务后,程序报错后,事务回滚