springboot 在使用@Transactional时手动控制部分方法数据库事务


//@Transactiona 作用在类上

@Autowired private DataSourceTransactionManager tm;

@Autowired private DefaultTransactionDefinition tx;

@Transactional(propagation = Propagation.NOT_SUPPORTED)//手动控制事务 否则会受到类上的@Transactional 注解影响
public void demo(int njjd,int psize){
	TransactionStatus tx_status = tm.getTransaction(tx);
	try {
		//todo update db
		tm.commit(tx_status);//提交
	} catch (Exception e) {
		e.printStackTrace();
		tm.rollback(tx_status);//回滚
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot中,可以使用`@Transactional`注解来实现手动提交事务。下面是一个示例代码: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.support.DefaultTransactionDefinition; @Service public class TransactionalService { @Autowired private PlatformTransactionManager transactionManager; @Transactional public void insert() { // 业务逻辑 // 手动提交事务 TransactionStatus status = transactionManager.getTransaction(new DefaultTransactionDefinition()); try { // 业务逻辑 transactionManager.commit(status); // 手动提交事务 } catch (Exception e) { transactionManager.rollback(status); // 手动回滚事务 } } } ``` 在上面的示例中,我们首先通过`@Autowired`注解注入了`PlatformTransactionManager`,它是Spring框架提供的事务管理器。然后,在`insert()`方法中,我们使用`transactionManager.getTransaction(new DefaultTransactionDefinition())`来获取事务的状态,然后在`try`块中执行业务逻辑,最后通过`transactionManager.commit(status)`手动提交事务。如果在业务逻辑执行过程中发生异常,我们可以通过`transactionManager.rollback(status)`手动回滚事务。 需要注意的是,`@Transactional`注解应该放在调用`insert()`方法方法上,以确保事务的生效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值