springboot手动提交事务
在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()
方法来回滚事务。
评论已关闭