今天使用spring boot做关于事务的demo时发现在service层使用@Transactional注解运行之后遇到错误并不能回滚。

@Service
public class HelloController { @Autowired
private StudentRepon studentRepon; @Transactional
public void hello(){ Student s=new Student();
s.setName("lllll");
s.setSex("1"); studentRepon.save(s); Student ss=new Student();
ss.setName("lllll");
ss.setSex("11111"); studentRepon.save(ss);
}
}

按照思路应该是第一次保存数据库会成功,但是第二次保存数据库时会失败,最后会进行事务回滚将第一次插入的数据也回滚过来,结果发现每次都是能够将第一次的数据插入。

在网上找信息,有的说是在spring boot的启动类上加上@EnableTransactionManagement注解,但是我的最后并不能解决我的问题,最后在一篇文章中发现好像是我的mysql数据库表创建的类型有问题。

mysql的表是有事务安全( 比如:InnoDB)和非事务安全(比如:ISAM、MyISAM)之分的

于是赶紧去查看我的数据库表,结果发现我的数据库表果然不是InnoDB类型的,我的是MyISAM类型的,压根就不支持事务,代码写的没问题也不行呀,所以将数据库表的类型修改为InnoDB类型的,再次尝试就没问题了。

下面是我使用Navicat进行修改表类型的步骤:

针对这种情况,所以说在创建数据库表的时候就应该设置为InnoDB类型,为防止以后开发时需要使用事务。

Spring Boot使用事务不起作用的更多相关文章

  1. SpringBoot 之Spring Boot Starter依赖包及作用

    Spring Boot 之Spring Boot Starter依赖包及作用 spring-boot-starter 这是Spring Boot的核心启动器,包含了自动配置.日志和YAML. spri ...

  2. spring boot 分布式事务实现(XA方式)

    关于spring boot 支持分布式事务,XA是常用的一种方式. 这里把相关的配置记下,方便以后使用. 首先配置两个不同的数据源 : 订单库.持仓库. /** * Created by zhangj ...

  3. spring boot开启事务管理,使用事务的回滚机制,使两条插入语句一致

    spring boot 事务管理,使用事务的回滚机制 1:配置事务管理 在springboot 启动类中添加 @EnableTransactionManagement //开启事务管理 @Enable ...

  4. spring boot jpa 事务管理

    spring boot 对jpa的支持极为方便,基本上不需要作太多配置,只需要加上注解就能支持事务: @Controller @Transactional(rollbackOn = Exception ...

  5. 如何在Spring Boot开启事务

    说到事务,那什么是事务呢? 事务(Transaction),一般是指要做的或所做的事情. 原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行. ...

  6. Spring Boot中的initializers的作用分析

    在SpringApplication的实例属性中有一个初始器的属性:List<ApplicationContextInitializer<?>> initializers ,这 ...

  7. spring boot ${}占位符不起作用

    问题:在 pom.xml 文件里定义好属性标签,然后在 properties或者xml 中使用${key}引用,打包之后就会自动替换掉. 但是在使用 spring boot 后发现,@可以替换,但是$ ...

  8. SpringBoot 之Spring Boot Starter依赖包及作用(自己还没有看)

    spring-boot-starter 这是Spring Boot的核心启动器,包含了自动配置.日志和YAML. spring-boot-starter-amqp 通过spring-rabbit来支持 ...

  9. spring mybatis mysql 事务不起作用

    之前框架事务应该是好的,不过这次做了些修改,不知如何竟然不好用了,整理了好半天,java框架配置就是吓人,有一点不熟悉的就可能暴露问题,好处是又深入的了解了配置原理. 开始以为是mysql不支持事务的 ...

随机推荐

  1. 基于verdaccio的npm私有仓库搭建

    详见个人博客:https://shengchangwei.github.io/verdaccio/ 一.使用npm安装 npm install --global verdaccio 二.cmd 启动 ...

  2. win10+MinGw+ffmpeg 编译

    一.安装MinGw+msys 下载 mingw-get-setup.exe 并安装,安装完成会弹出以下界面. 选中红色框几个选项,点击Installation->Apply Changes 进行 ...

  3. 通过IDEA快速定位和排除依赖冲突

    前言 我们程序员在开发的时候经常会遇到各种各样的 BUG 问题,其中大部分是业务逻辑异常,还有一些是代码书写不规范造成的异常例如:NullPointException(NPE),IndexOutOfB ...

  4. js实现列表从下往上循环滚动

    html: <div class="liscorll"> <ul> <li>内容</li> </ul> </div ...

  5. 20190725 NOIP模拟8

    今天起来就是虚的一批,然后7.15开始考试,整个前半个小时异常的困,然后一看题,T1一眼就看出了是KMP,但是完了,自己KMP的打法忘的一干二净,然后开始打T2,T2肝了一个tarjan点双就扔上去了 ...

  6. 去除word文档页眉处的横杠

    ​ 如何去除上图word文档页眉处的横杠 wps软件使用者 第一步双击页眉,到页眉页脚: ​ 第一步点击上图页眉横线,点击无线型或者删除横线即可: ​ ​ ​ Microsoft Office 专业增 ...

  7. python基础-面向过程编程

    面向过程编程 面向过程编程其实是一种机械式的思维方式,其核心就是"过程". 过程指的是一种解决问题的步骤,即先干什么再干什么,最后干什么. 优点:将复杂的问题流程化,进而简单化. ...

  8. Node 入门

    Node 入门 NodeJs 安装,HelloWorld 下载地址 https://nodejs.org/zh-cn/ https://nodejs.org/dist/ 用 Node命令行输出Hell ...

  9. nyoj 96-n-1位数 (strlen, atoi, ceil)

    96-n-1位数 内存限制:64MB 时间限制:3000ms 特判: No 通过数:30 提交数:47 难度:1 题目描述: 已知w是一个大于10但不大于1000000的无符号整数,若w是n(n≥2) ...

  10. 【并发编程】Java中的原子操作

    什么是原子操作 原子操作是指一个或者多个不可再分割的操作.这些操作的执行顺序不能被打乱,这些步骤也不可以被切割而只执行其中的一部分(不可中断性).举个列子: //就是一个原子操作 int i = 1; ...