保亭黎族苗族自治县网站建设_网站建设公司_交互流畅度_seo优化
2025/12/25 18:35:50 网站建设 项目流程

注意:TransactionCallbackWithoutResult是TransactionCallback的一个子类,用于没有返回值的情况。如果你需要返回值,可以使用TransactionCallback<T>。

方式二:使用DataSourceTransactionManager

这种方式更底层一些,直接使用事务管理器来获取事务状态,然后手动提交或回滚。

步骤:
a. 注入DataSourceTransactionManager
b. 使用TransactionDefinition定义事务属性(如隔离级别、传播行为等)
c. 获取事务状态(TransactionStatus)
d. 在try-catch块中执行操作,根据情况提交或回滚

示例代码:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.DefaultTransactionDefinition;@Service
public class YourService {@Autowiredprivate PlatformTransactionManager transactionManager;public void manualTransactionWithManager() {// 定义事务属性DefaultTransactionDefinition def = new DefaultTransactionDefinition();def.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED);def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);// 开启事务TransactionStatus status = transactionManager.getTransaction(def);try {// 这里执行你的数据库操作// yourMapper.insert(entity1);// yourMapper.update(entity2);// 操作成功,提交事务
            transactionManager.commit(status);} catch (Exception e) {// 发生异常,回滚事务
            transactionManager.rollback(status);throw e; // 可以选择抛出异常
        }}
}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.DefaultTransactionDefinition;@Service
public class UserService {@Autowiredprivate PlatformTransactionManager transactionManager;@Autowiredprivate UserMapper userMapper;public void platformTransactionDemo() {// 定义事务属性DefaultTransactionDefinition def = new DefaultTransactionDefinition();def.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED);def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);// 开启事务TransactionStatus status = transactionManager.getTransaction(def);try {// 执行数据库操作User user = new User();user.setName("王五");userMapper.insert(user);// 业务逻辑...
            userMapper.updateById(user);// 手动提交事务
            transactionManager.commit(status);} catch (Exception e) {// 回滚事务
            transactionManager.rollback(status);throw e;}}
}

 

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询