事务 - 编程式事务

package com.example.demo.service;

import com.example.demo.mapper.UserMapper;
import com.example.demo.model.User;
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 UserService {

    @Autowired
    private UserMapper userMapper;

    @Autowired
    private PlatformTransactionManager transactionManager;

    public void createUser(String name) {
        // 创建事务定义
        DefaultTransactionDefinition def = new DefaultTransactionDefinition();

        // 设置传播行为
        def.setPropagationBehavior(DefaultTransactionDefinition.PROPAGATION_REQUIRED);

        // 设置隔离级别(例如:READ_COMMITTED)
        def.setIsolationLevel(DefaultTransactionDefinition.ISOLATION_READ_COMMITTED);

        // 设置超时时间(例如:10秒)
        def.setTimeout(10);

        // 开始事务
        TransactionStatus status = transactionManager.getTransaction(def);
        try {
            // 执行数据库操作
            User user = new User();
            user.setName(name);
            userMapper.insertUser(user);
            
            // 提交事务
            transactionManager.commit(status);
        } catch (Exception e) {
            // 回滚事务
            transactionManager.rollback(status);
            throw e; // 重新抛出异常
        }
    }
}
posted @   CyrusHuang  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示