今天使用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. python基础-流程控制(if,while,for)

    今日内容总结 --流程控制(if,while,for) if:用来判断事物的对错.真假.是否执行.根据不同的情况判断,条件满足执行某条件下的语句 语法结构(3种) # 第一种,只有if结构.条件表达式 ...

  2. 第六篇 视觉slam中的优化问题梳理及雅克比推导

    优化问题定义以及求解 通用定义 解决问题的开始一定是定义清楚问题.这里引用g2o的定义. \[ \begin{aligned} \mathbf{F}(\mathbf{x})&=\sum_{k\ ...

  3. Scrapy爬虫day1——环境配置

    安装 Scrapy pip install scrapy 配置虚拟环境 mkvirtualenv Spider 创建项目 在Spider的虚拟环境中运行 scrapy startproject Boo ...

  4. Linux下修改文件权限,所有权

    Linux与Unix是多用户操作系统,所以文件的权限与所有权的实现就显得很有必要:每个文件主要与三组权限打交道,分别是用户(user),用户组(group),其他用户(other) 用户(u)是文件的 ...

  5. HTML知识点汇总

    一.什么是HTML HTML是用来描述网页的一种语言. HTML是指超文本标记语言(不仅包含纯文本,还包含图片.超链接.音频.视频等). HTML使用一套标记标签来描述网页. 二.HTML标签的作用 ...

  6. Tomcat性能调优实战

    今日帮朋友做了tomcat性能调优的实际操作,心得记录一下. 服务器:Windows2017 配置:CPU 4 内存 8G Tomcat8.0+版本. 压力测试工具:apache-jmeter-4.0 ...

  7. 零基础Linux入门学习方法--如何做好笔记及长效知识复习记忆

    “工欲善其事必先利其器”. 此次学习的0基础教材为刘遄(Liu Chuán)老师的<Linux就该这么学>.学习目的是通过RHCE认证.有关RHCE认证介绍会在认识Linux及红帽认证中记 ...

  8. php Yaf_Loader::import引入文件报错的解决方法

    php Yaf_Loader::import引入文件报错的解决方法 改下配置文件就行<pre>yaf.use_spl_autoload=1</pre> 也可以PHP动态修改 毕 ...

  9. 瞎折腾实录:构建 Armel 版本的 .NET Core 教程和资料资源

    目录 首先我要说明,我失败了~ 我把我的进度和经验放出来,希望能够帮助别人完成编译工作~ 背景:最近接手一个华为某型号的嵌入式设备,需要在上面搭建 .NET Core 环境. 设备是 Armel 架构 ...

  10. jdk 错误1316 指定账户已存在 与 jdk1.7安装和配置环境变量 与 jdk1.8与1.7版本的切换使用

    问题:         安装JDK,提示错误信息:,指定的账号已存在. 原因:         安装JDK,相当于安装了一个软件,要使用系统的软件卸载功能卸载,不能只删除安装目录文件夹下的文件,如果只 ...