zoukankan      html  css  js  c++  java
  • SpringBoot使用事务

    事务是很多项目中需要注意的东西,有些场景如果没有加事务控制就会导致一些脏数据进入数据库,本文简单介绍SpringBoot怎样使用事务。

    本文使用的是之前整合JPA的文章,具体可以参考 传送门

    无论是配置还是pom文件等等,没有任何改变,改变的是测试的controller上面的两个方法,其中一个方法使用了@Transactional注解来进行事务控制。
    controller代码如下:

    @RestController
    public class HouseController {
    
        @Autowired
        private HouseRepository houseRepository;
    
        @GetMapping("/test1")
        public String test1(){
            houseRepository.save(new House("house1", "100平方米"));
            houseRepository.save(new House("house2", "100平方米"));
            houseRepository.save(new House("house3", "100平方米"));
            houseRepository.save(new House("house444444444", "100平方米"));
            houseRepository.save(new House("house5", "100平方米"));
            return "success";
        }
    
        @GetMapping("/test2")
        @Transactional
        public String test2(){
            houseRepository.save(new House("house6", "100平方米"));
            houseRepository.save(new House("house7", "100平方米"));
            houseRepository.save(new House("house8", "100平方米"));
            houseRepository.save(new House("house999999999", "100平方米"));
            houseRepository.save(new House("house10", "100平方米"));
            return "success";
        }
    }
    

    test1方法没有加入事务,test2方法加入了事务注解。
    启动项目,浏览器访问http://localhost:8888/test1,浏览器如图所示,报错了,因为第四条数据超长了。

    查看数据库,可以看到如图:

    从上图可以看出,前三条插入成功了,但是后两条都失败了,这并不是我们想要的结果。通常来讲,我们需要的只是成功的话都插入,失败的话都回滚,这时我们调用http://localhost:8888/test2,在次查看数据库,还是之前的三条数据,SpringBoot使用事务建当整合到这里就完成了。

    源码下载 :大老杨码云

    个人网站:https://www.dalaoyang.cn

    关注作者公众号

    dalaoyang_gongzhonghao.jpg

  • 相关阅读:
    异常:java.io.IOException: Too many open files:
    转载 Servlet3.0中使用注解配置Servle
    Spring 源码从github导入源码到idea2016
    git 命令
    常用linux命令
    mysql优化常用语句
    mysql中in、not in、exists和not exists的区别
    mysql优化
    php常用的数据结构算法
    算法(一)
  • 原文地址:https://www.cnblogs.com/dalaoyang/p/9101605.html
Copyright © 2011-2022 走看看