spring @Transactional怎么手动提交

spring 方法加了@Transactional,我想循环一次就提交,怎么搞,开启了事务默认应该是执行完了才全部提交

这个注解是应用到mothod上面的 @Target({ElementType.METHOD, ElementType.TYPE}),你的整个方法是一个事务,没法在方法里面提交。除非你这个方法不注解,方法循环体里面写子方法,子方法注解开启事务。。我觉得是这样的。。

中间测试了一下 在service层 循环到一定次数之后 return 是生效的

配置的事务就是在这个方法执行结束后提交,当然我这样说也不全面,应该说,事务在开启他的那个方法结束后就提交。你这个问题就是你数据库没有学好了,在一个事务空间(就是在一个事务里面)查询到的数据是这个事务空间里面的数据(换句话就是说你在这个事务里面添加的数据,在这个事务本身里面是能够看到的,只是其他事务不能看到这个数据而已)。

我没试过啊,你看看行不
把你的业务分层 控制-服务-dao,在dao层的方法加事务,在服务层里循环调用dao层方法
但是你这么做,如果是最高级别的隔离等级,会让这个方法变成单例的,每个客户端的人调用时时排队的

TransactionSynchronizationUtils.triggerFlush()

如果在方法上加了@transcation 是方法中所有操作数据库的地方都成功后才commit 如果有一个地方错了 就会rollback

可以洗手动提交,但不能用@Transactional
参考下:https://www.cnblogs.com/banning/p/6346669.html

首先事务有声明式和编程式,需要手动的话,就需要编程式,在代码里面用编程事务开启事务,然后提交事务,这个api可以在网上搜索下

配置的事务就是在这个方法执行结束后提交,当然我这样说也不全面,应该说,事务在开启他的那个方法结束后就提交。你这个问题就是你数据库没有学好了,在一个事务空间(就是在一个事务里面)查询到的数据是这个事务空间里面的数据(换句话就是说你在这个事务里面添加的数据,在这个事务本身里面是能够看到的,只是其他事务不能看到这个数据而已)。