springboot手动提交事务
    		       		warning:
    		            这篇文章距离上次修改已过429天,其中的内容可能已经有所变动。
    		        
        		                
                在Spring Boot中,你可以通过编程的方式手动提交事务。这通常通过使用TransactionTemplate或者直接使用PlatformTransactionManager来完成。以下是一个使用TransactionTemplate的例子:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.support.TransactionTemplate;
 
@Service
public class MyService {
 
    @Autowired
    private TransactionTemplate transactionTemplate;
 
    public void performTransaction() {
        transactionTemplate.execute((status) -> {
            // 在这里执行你的数据库操作
            // ...
 
            // 如果你需要回滚事务,可以调用 status.setRollbackOnly();
            // ...
 
            // 返回一个值(通常是void)
            return null;
        });
    }
}如果你想直接使用PlatformTransactionManager,可以这样做:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionCallback;
import org.springframework.transaction.support.TransactionTemplate;
 
@Service
public class MyService {
 
    @Autowired
    private PlatformTransactionManager transactionManager;
 
    public void performTransaction() {
        TransactionStatus status = transactionManager.getTransaction(new DefaultTransactionDefinition());
        try {
            // 在这里执行你的数据库操作
            // ...
 
            // 提交事务
            transactionManager.commit(status);
        } catch (Exception e) {
            // 回滚事务
            transactionManager.rollback(status);
            throw e;
        }
    }
}在这两种方式中,你需要确保在操作数据库后,如果没有发生异常,你调用commit()方法来提交事务。如果发生异常,你应该调用rollback()方法来回滚事务。
评论已关闭