Spring Boot 事务支持

如何使用?

Spring Boot 使用事务支持,非常简单,底层依然采用的是Spring本身提供的事务管理。

1、在启动类中添加 @EnableTransactionManagement 注解

2、在业务层的接口实现类中的方法上添加 @Transactional 注解

实例演示

SpringbootApplication 启动类上添加注解:@EnableTransactionManagement

@SpringBootApplication
@MapperScan(basePackages = "com.itydf.springboot.mapper")  //扫描mapper包下面的接口类
@EnableTransactionManagement    //开启事务
public class SpringbootApplication {

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

}

控制层代码,模拟数据测试

 //更新用户信息
 @PostMapping(value = "update")
 public JSONObject updateUser(){
     JSONObject jsonObject = new JSONObject();
     User user = new User();
     user.setId(10);
     user.setName("露娜001");
     int update = userService.updateUserById(user);
     if(update > 0){
         jsonObject.put("code",200);
         jsonObject.put("msg","success");
     }else {
         jsonObject.put("code",2001);
         jsonObject.put("msg","fail");
     }
     return jsonObject;
 }

接口实现类,业务层,在方法上面添加 @Transactional:表示此方法有事务

 @Transactional //表示此方法有事务
 @Override
 public int updateUserById(User user) {
     //1、更新用户信息
     int update = userMapper.updateUserById(user);
     //2、抛出异常、Spring事务管理是当方法抛出异常后,前面的操作都会回滚,事务不会提交
     int a = 10/0;
     return update;
 }

mapper.xml

<update id="updateUserById" parameterType="com.itydf.springboot.pojo.User">
    update user set name = #{name } where id = #{id}
</update>

测试结果,抛出了异常,前面的事务都会回滚,最终事务不会提交。
Spring Boot 事务支持_第1张图片
可以发现我们数据库中的数据,并没有别修改。
Spring Boot 事务支持_第2张图片
此时我们把事务注解去掉,该方法没有事务管理,还是抛出异常,再测试一遍

 //@Transactional //表示此方法有事务
 @Override
 public int updateUserById(User user) {
     //1、更新用户信息
     int update = userMapper.updateUserById(user);
     //2、抛出异常、Spring事务管理是当方法抛出异常后,前面的操作都会回滚,事务不会提交
     int a = 10/0;
     return update;
 }

依然报错,原因是我们加入了一个int a = 10/0的异常,是很正常的。
Spring Boot 事务支持_第3张图片
再查看数据库,发现我们的值已经被修改了。
Spring Boot 事务支持_第4张图片
总结:Spring事务管理,当方法有异常的时候,就会开始管理,如果你想让该方法有事务管理就加此注解 @Transactional :表示此方法有事务

你可能感兴趣的:(SpringBoot系列)