事务是很多项目中需要注意的东西,有些场景如果没有加事务控制就会导致一些脏数据进入数据库,本文简单介绍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

关注作者公众号

SpringBoot使用事务的更多相关文章

  1. SpringBoot 注解事务声明式事务

    转载请注明: http://www.cnblogs.com/guozp/articles/7446477.html springboot 对新人来说可能上手比springmvc要快,但是对于各位从sp ...

  2. springboot mybatis 事务管理

    本文主要讲述springboot提供的声明式的事务管理机制. 一.一些概念 声明式的事务管理是基于AOP的,在springboot中可以通过@Transactional注解的方式获得支持,这种方式的优 ...

  3. springboot开启事务支持时报代理错误

    问题:The bean 'xxx' could not be injected as a 'com.github.service.xx' because it is a JDK dynamic pro ...

  4. SpringBoot设置事务管理

    关于事务就不介绍了,前面在研究spring的时候就已经研究过了,参考:https://www.cnblogs.com/qlqwjy/p/7296493.html 这里直接研究springboot中事务 ...

  5. 【SpringBoot系列3】SpringBoot使用事务和AOP

    前言: 因为SpringBoot操作两者实在太简单了,我就放一起来写了. 正文(事务): /** * springboot中运用事务 * 真的超级方便,直接加上注解就ok了,连配置都省了 * @ret ...

  6. Springboot @Transactional 事务不回滚

    一.异常捕获的原因 这里Exception异常,他又分为运行时异常RuntimeException和非运行时异常 可查的异常(checked exceptions):Exception下除了Runti ...

  7. springboot开启事务管理

    spring中开启事务管理需要在xml配置文件中配置,springboot中采取java config的配置方式. 核心是@EnableTransactionManager注解,该注解即为开启事务管理 ...

  8. springboot添加事务

    (转自:http://www.cnblogs.com/xingzc/p/6029483.html) 什么是事务? 我们在开发企业应用时,对于业务人员的一个操作实际是对数据读写的多步操作的结合.由于数据 ...

  9. Springboot下事务管理的简单使用

    关于事务管理的概念这里就不多介绍了,在我的博客“JDBC事务之理论篇”中也有介绍. 关于Spring的事务管理,主要是通过事务管理器来进行的.这里看个Spring事务管理的接口图:(来自博客https ...

随机推荐

  1. 好用的JS拖拽插件

    下载artDialog插件的时候发现它把拖拽单独封装成了一个方法,挺好用的,使用方法如下... 第一种拖拽方式-点击容器指定区域进行拖拽 $('.ui-dialog').on(DragEvent.ty ...

  2. 怎么编辑PDF,如何给PDF加水印

    在使用PDF文件的时候,往往会用到PDF编辑器来修改,那么,在使用PDF编辑器修改文件的时候,想要在文件中添加水印,这该怎么操作呢,不会的小伙伴可以看看下面的文章了哦,说不定就会了. 1.打开运行PD ...

  3. Eclipse搭建C++\C开发环境

    1.最近使用visualStudio IDE开发Unity 3D使用的编程语言是C#但是发现visualStudio12 版本在自己主机上运行速度比够快,怀疑是不是处理器或者是版本问题,所以该卸载了, ...

  4. bzoj1977次小生成树(重要)

    #include<cstdio> #include<iostream> #include<cstring> #include<queue> #inclu ...

  5. cf219d 基础换根法

    /*树形dp换根法*/ #include<bits/stdc++.h> using namespace std; #define maxn 200005 ]; int root,n,s,t ...

  6. h5 video标签的使用

     标签的布置 <video src="1.mp4" poster="1.jpg" id="vid" controls> 你的浏览 ...

  7. Plain Old Data (POD) (转)

    定义 POD类型包括下述C++类型,以及其cv-qualified的类型,还有以其为基类型的数组类型: 标量类型(scalar type) POD类类型(POD class type) 标量类型 术语 ...

  8. Nginx配置笔记

    配置资源的缓存周期 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {       root  www;       expires  3560d; } loca ...

  9. Android 敏感权限申请

    动态权限管理是Android6.0(Build.VERSION_CODES.M = Api23)推出的,提醒用户当前APP所需要的权限,防止滥用.这些权限一般分为三种:(1)普通权限:直接manife ...

  10. Go语言之defer关键字

    类似于java中的finally, 在函数返回来执行, 它用来保证函数一定会作一些事情. package main import "fmt" func main() { defer ...