<5>springboot使用事务

本文介绍了在SpringBoot项目中基于MyBatis进行数据库操作,特别是事务管理和更新操作的实现。通过在Service层的方法上添加@Transactional注解来启用事务,并在实现类中演示了一个更新学生信息的示例,其中故意引入错误以展示事务回滚的机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在上个整合Myybatis项目基础上进行进一步的更改

事务是一个完整的业务,只跟SQL的增、删、改有关。

  1. 修改Controller类添加一个更新的方法
@RestController
public class StudentController {

    @Autowired
    private StudentService studentService;

    @GetMapping("/student/{id}")
    public Student queryStudentById(@PathVariable Integer id) {
        return studentService.queryStudentById(id);
    }

    @GetMapping("/update")
    public String update(Integer id, String name) {
        Student student = new Student();
        student.setId(id);
        student.setName(name);
        int updateCount = studentService.update(student);
        return "修改学生编号" + id + "的姓名结果:" + name;
    }
}
  1. 修改Service接口和实现类
// 接口
public interface StudentService {
    Student queryStudentById(Integer id);

    int update(Student student);
}

// 实现类
@Service
public class StudentServiceImpl implements StudentService {

    @Autowired
    private StudentMapper studentMapper;

    @Override
    public Student queryStudentById(Integer id) {
        return studentMapper.selectByPrimaryKey(id);
    }

    @Transactional
    @Override
    public int update(Student student) {
        int i = studentMapper.updateByPrimaryKey(student);

        //这段代码肯定报错, 数据库不应该更改,修过添加支持注解
        int a = 10/0;

        return i;
    }
}
  • 实现事务需要在支持事务的方法上添加@Transactional注解
  • 如果是springboot1.x需要的启动类上添加@EnableTransactionManagement开启事务
@SpringBootApplication
@EnableTransactionManagement // 开启事务(springboot1.x需要加, 事务才会生效)
public class Application {

	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值