spring boot controller设置 @Transactional 不回滚的解决办法
@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 不回滚的解决办法的更多相关文章
- Spring Boot Configuration Annotation Proessor not found in classpath解决办法
From: https://www.cnblogs.com/whtgjy/p/9438317.html 出现spring boot Configuration Annotation Proessor ...
- spring boot 使用 mybatis 开启事务回滚 的总结
1.前言 以前没有使用mybatis,可以关闭自动提交,然后做sql操作,对操作进行catch捕获异常, 如果没有异常则commit 提交 ,有异常则 rollback 回滚,新增的数据则删除 ,修改 ...
- spring boot web项目在IDEA下热部署解决办法(四步搞定)
最近在用spring boot 做一个web站点,修改了类.html.js等,刷新页面,没有生效,非要手动去make一下或者重启,大大降低了开发效率. 什么是热部署? 应用启动后会把编译好的Class ...
- Spring中@Transactional事务回滚实例及源码
一.使用场景举例 在了解@Transactional怎么用之前我们必须要先知道@Transactional有什么用.下面举个栗子:比如一个部门里面有很多成员,这两者分别保存在部门表和成员表里面,在删除 ...
- Spring中@Transactional事务回滚(含实例详细讲解,附源码)
一.使用场景举例 在了解@Transactional怎么用之前我们必须要先知道@Transactional有什么用.下面举个栗子:比如一个部门里面有很多成员,这两者分别保存在部门表和成员表里面,在删除 ...
- Spring中@Transactional事务回滚
转载: Spring中@Transactional事务回滚 一.使用场景举例 在了解@Transactional怎么用之前我们必须要先知道@Transactional有什么用.下面举个栗子:比如一个部 ...
- Spring中@Transactional事务回滚(含实例具体解说,附源代码)
一.使用场景举例 在了解@Transactional怎么用之前我们必须要先知道@Transactional有什么用. 以下举个栗子:比方一个部门里面有非常多成员,这两者分别保存在部门表和成员表里面,在 ...
- Spring AOP声明式事务异常回滚(转)
转:http://hi.baidu.com/iduany/item/20f8f8ed24e1dec5bbf37df7 Spring AOP声明式事务异常回滚 近日测试用例,发现这样一个现象:在业务代码 ...
- Spring AOP声明式事务异常回滚
近日测试用例,发现这样一个现象:在业务代码中,有如下两种情况,比如:throw new RuntimeException("xxxxxxxxxxxx"); 事物回滚throw ne ...
随机推荐
- Ubuntu16.04 64位编译安装Hi3520D_SDK_V1.0.4.0
1.复制uboot/tools/mkimage到环境变量路径 2.修改kernel/timeconst.pl,删除define 3.busybox makefile修改: /itc_work/hi35 ...
- babel-loader和webpack UglifyJS一起使用时console的问题
一起使用babel-loader和webpack UglifyJS时,babel会优先处理一遍代码,编译后的代码才进入webpack进行打包和优化操作. 出处:https://www.tangshua ...
- 读懂 PetaLinux:让 Linux 在 Zynq 上轻松起“跑”(转)
对于Zynq这样一个“ARM+可编程逻辑”异构处理系统我们已经不陌生,其创新性大家也有目共睹.不过想要让更多的应用享受到这一“创新”带来的红利,让其真正“落地”则需要大量系统性的工作,去营造一个完善的 ...
- LOJ 2339 「WC2018」通道——边分治+虚树
题目:https://loj.ac/problem/2339 两棵树的话,可以用 CTSC2018 暴力写挂的方法,边分治+虚树.O(nlogn). 考虑怎么在这个方法上再加一棵树.发现很难弄. 看了 ...
- HanLP分词命名实体提取详解
HanLP分词命名实体提取详解 分享一篇大神的关于hanlp分词命名实体提取的经验文章,文章中分享的内容略有一段时间(使用的hanlp版本比较老),最新一版的hanlp已经出来了,也可以去看看新版 ...
- 用shell通过jps -m来杀死进程
#!/bin/sh ### find pid jps=`jps -m` echo "$jps"|while read i do if[[ $i =~"agentTestT ...
- GPIO实验
一.目标:点亮led 1.看原理图:怎样点亮led 2.怎样GPF4输出0/1 a.配置功能 输出/输入/其他功能(中断或者其他) b.设置输出高电平/低电平 操作寄存器--->看芯片手册 A ...
- js写法【2】
1.stringobject.replace(/regex/,function(capture,index,stringob){});可 用来对每个捕获执行一段脚本,返回捕获替换值. 2.arrayo ...
- python的命令行参数处理
import argparse # A position argument func_choice = {'client' : 'client function', "server&qu ...
- 在windows server 2012上安装.net3.5
1.dism.exe /online /enable-feature /featurename:NetFX3 /Source:D:\sources\sxs /all 2.Start the Local ...