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; // 重新抛出异常
}
}
}