@Transactional
@ApiOperation(value = "添加一个用户信息")
@RequestMapping(value = "/create", method = RequestMethod.POST)
public RESTful create() {
return userService.insert(null, null);
}
 public RESTful insert(User user, Role role) {
try {
Date date = new Date(); user = new User();
user.setName("tq2");
user.setAge(26);
user.setCreate_at(date); userMapper.insertUser(user); role = new Role();
//role.setName("role1");
role.setCreate_at(date); roleMapper.insert(role); return new RESTful(CodeEnum.成功.getCode(), CodeEnum.成功.getMsg());
} catch (Exception ex) {
return new RESTful(CodeEnum.系统异常.getCode(), CodeEnum.系统异常.getMsg());
}
}

1、role表的 name 字段不可空,但并不执行回滚

参考:https://www.cnblogs.com/leohe/p/6673096.html?utm_source=itdadao&utm_medium=referral

实现方式一

 2 @ApiOperation(value = "添加一个用户信息")
@RequestMapping(value = "/create", method = RequestMethod.POST)
public RESTful create() {
try {
return userService.insert(null, null);
} catch (Exception ex) {
return new RESTful(CodeEnum.系统异常.getCode(), CodeEnum.系统异常.getMsg());
}
}
 @Transactional
public RESTful insert(User user, Role role) {
try {
Date date = new Date(); user = new User();
user.setName("tq2");
user.setAge(26);
user.setCreate_at(date); userMapper.insertUser(user); role = new Role();
//role.setName("role1");
role.setCreate_at(date); roleMapper.insert(role); return new RESTful(CodeEnum.成功.getCode(), CodeEnum.成功.getMsg());
} catch (Exception ex) {
throw new RuntimeException();
}

实现方式二

 @ApiOperation(value = "添加一个用户信息")
@RequestMapping(value = "/create", method = RequestMethod.POST)
public RESTful create() {
return userService.insert(null, null);
}
 @Transactional
public RESTful insert(User user, Role role) {
try {
Date date = new Date(); user = new User();
user.setName("tq2");
user.setAge(26);
user.setCreate_at(date); userMapper.insertUser(user); role = new Role();
//role.setName("role1");
role.setCreate_at(date); roleMapper.insert(role); return new RESTful(CodeEnum.成功.getCode(), CodeEnum.成功.getMsg());
} catch (Exception ex) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return new RESTful(CodeEnum.系统异常.getCode(), CodeEnum.系统异常.getMsg());
}
}

spring boot controller设置 @Transactional 不回滚的解决办法的更多相关文章

  1. Spring Boot Configuration Annotation Proessor not found in classpath解决办法

    From: https://www.cnblogs.com/whtgjy/p/9438317.html 出现spring boot Configuration Annotation Proessor ...

  2. spring boot 使用 mybatis 开启事务回滚 的总结

    1.前言 以前没有使用mybatis,可以关闭自动提交,然后做sql操作,对操作进行catch捕获异常, 如果没有异常则commit 提交 ,有异常则 rollback 回滚,新增的数据则删除 ,修改 ...

  3. spring boot web项目在IDEA下热部署解决办法(四步搞定)

    最近在用spring boot 做一个web站点,修改了类.html.js等,刷新页面,没有生效,非要手动去make一下或者重启,大大降低了开发效率. 什么是热部署? 应用启动后会把编译好的Class ...

  4. Spring中@Transactional事务回滚实例及源码

    一.使用场景举例 在了解@Transactional怎么用之前我们必须要先知道@Transactional有什么用.下面举个栗子:比如一个部门里面有很多成员,这两者分别保存在部门表和成员表里面,在删除 ...

  5. Spring中@Transactional事务回滚(含实例详细讲解,附源码)

    一.使用场景举例 在了解@Transactional怎么用之前我们必须要先知道@Transactional有什么用.下面举个栗子:比如一个部门里面有很多成员,这两者分别保存在部门表和成员表里面,在删除 ...

  6. Spring中@Transactional事务回滚

    转载: Spring中@Transactional事务回滚 一.使用场景举例 在了解@Transactional怎么用之前我们必须要先知道@Transactional有什么用.下面举个栗子:比如一个部 ...

  7. Spring中@Transactional事务回滚(含实例具体解说,附源代码)

    一.使用场景举例 在了解@Transactional怎么用之前我们必须要先知道@Transactional有什么用. 以下举个栗子:比方一个部门里面有非常多成员,这两者分别保存在部门表和成员表里面,在 ...

  8. Spring AOP声明式事务异常回滚(转)

    转:http://hi.baidu.com/iduany/item/20f8f8ed24e1dec5bbf37df7 Spring AOP声明式事务异常回滚 近日测试用例,发现这样一个现象:在业务代码 ...

  9. Spring AOP声明式事务异常回滚

    近日测试用例,发现这样一个现象:在业务代码中,有如下两种情况,比如:throw new RuntimeException("xxxxxxxxxxxx"); 事物回滚throw ne ...

随机推荐

  1. oracle-gi安装

    ############################################### 在cs6.5,cs7.2上安装grid11.2.0.1 和database11.2.0.1还是有问题 1 ...

  2. MySQL 中的反引号(`):是为了区分 MySql 关键字与普通字符而引入的符号;一般,表名与字段名都使用反引号。

    MySQL 中的反引号(`):是为了区分 MySql 关键字与普通字符而引入的符号:一般,表名与字段名都使用反引号.

  3. Tornado 文件操作笔记

    import tornado.web import tornado.ioloop import tornado.options import tornado.httpserver from torna ...

  4. 中文自然语言处理工具hanlp隐马角色标注详解

    本文旨在介绍如何利用HanLP训练分词模型,包括语料格式.语料预处理.训练接口.输出格式等. 目前HanLP内置的训练接口是针对一阶HMM-NGram设计的,另外附带了通用的语料加载工具,可以通过少量 ...

  5. OpenEXR的采样机制

    OpenEXR的输出机制是无损的,这样做会受到部分低配置电脑存储及运算带宽的限制. 当前有很多针对图像的压缩算法来解决这个问题,OpenEXR另外提供了WRITE_YC这种存储方式,这种方式会将RGB ...

  6. Android 项目中的资源获取方法

    Android资源文件分类: Android资源文件大致可以分为两种: 第一种是res目录下存放的可编译的资源文件: 这种资源文件系统会在R.java里面自动生成该资源文件的ID,所以访问这种资源文件 ...

  7. workerman 简单笔记

    运行命令 curl -Ss http://www.workerman.net/check.php | php     都显示的ok (注意:检测脚本中没有检测event扩展或者libevent扩展) ...

  8. Mysql 基准测试mysqlslap,sysbench

     基准测试基本步骤 设计尽可能简单,明确测试方式哪一种,使用什么样的数据 例如:反映实际情况,用生产环境的数据的备份,可以通过日志,进行访问量的回放 如果测试性能,可以用测试工具生成数据. 执行一次和 ...

  9. 测试教程网.unittest教程.4. 实例: 读取测试数据并测试弱密码

    From: http://www.testclass.net/pyunit/test_example_2/ 背景 接上一节的弱密码例子,我们的用例尽管运行的不错,但还是有点问题. 假如我们需要增加一些 ...

  10. SpringSecurity-SecurityContextPersistenceFilter的作用

    SecurityContextPersistenceFilter每个request只执行一次,以解决servlet容器的兼容性问题(特别是WebLogic). 它在request执行之前从Securi ...