JFinal DB.tx()事务回滚及lambda表达式应用
JFinal DB.tx()事务回滚
在要往数据库操作多条数据时,就需要用到事务,JFinal中有封装好的事务应用
写法:
Db.tx(new IAtom(){
@Override
public boolean run() throw SQLException{
// 在这里写要执行的操作,操作结果result为boolean值
return result;
}
});
实际应用示例:
// 创建邀请码
public String setInviteCode(final WwInviteCodeTemp codeTemp, final Long userId, Integer app) {
String inviteCode = "";
if (codeTemp != null) {
inviteCode = codeTemp.getCode(); // 获取随机的邀请码
final WwInviteCode code = (WwInviteCode) newRecord(new WwInviteCode()); // 保存邀请码
code.setApp(app); // 保存产品编号
code.setUserId(userId);
code.setInviteCode(inviteCode);
final Integer finalApp = app;
boolean b = use().tx(new IAtom() {
@Override
public boolean run() throws SQLException {
boolean flag = codeTemp.setAction(1).update();
if (flag) {
WwInviteCode wwInviteCode = WwInviteCode.dao.findById(userId);
if (wwInviteCode != null) {
flag = false;
} else {
flag = code.setApp(finalApp).setUserId(userId).setInviteCode(codeTemp.getCode()).save();
}
}
return flag;
}
});
if (b == false) {
inviteCode = "";
}
}
return inviteCode;
}
return false或者有异常抛出都会回滚事务,return true才会提交事务,Db.tx()方法是有返回值true/false,可对该返回值作业返回,如果想让run方法中往外层传递变量,可以在外层定义一个final修饰的容器类对象。
修改为lambda表达式方式:
// 创建邀请码
public String setInviteCode(final WwInviteCodeTemp codeTemp, final Long userId, Integer app) {
String inviteCode = "";
if (codeTemp != null) {
inviteCode = codeTemp.getCode(); // 获取随机的邀请码
final WwInviteCode code = (WwInviteCode) newRecord(new WwInviteCode()); // 保存邀请码
code.setApp(app); // 保存产品编号
code.setUserId(userId);
code.setInviteCode(inviteCode);
final Integer finalApp = app;
boolean b = use().tx(() -> {
boolean flag = codeTemp.setAction(1).update();
if (flag) {
WwInviteCode wwInviteCode = WwInviteCode.dao.findById(userId);
if (wwInviteCode != null) {
flag = false;
} else {
flag = code.setApp(finalApp).setUserId(userId).setInviteCode(codeTemp.getCode()).save();
}
}
return flag;
});
if (b == false) {
inviteCode = "";
}
}
return inviteCode;
}
了解Java Lambda可参考:
JFinal DB.tx()事务回滚及lambda表达式应用的更多相关文章
- jfinal 基本应用 --事务回滚
事务回滚 1.当时需要用到事务回滚,但是看到网上只有问题,没有真实的到底怎么用法. 2.我看了一下文档,结合了网上的大神的博客. 第一种方法: Db.tx(new IAtom(){ @Override ...
- 列式存储(三)JFinal DB.tx()事务
上一篇中说道了列式存储中新增表单时后台接收数据问题,在存入数据库时一次插入多条数据,就要用到事务. JFinal中有个封装好的事务应用,用起来非常方便简单. 写法1: Db.tx(new IAtom( ...
- Spring异常抛出触发事务回滚
Spring.EJB的声明式事务默认情况下都是在抛出unchecked exception后才会触发事务的回滚 /** * 如果在spring事务配置中不为切入点(如这里的切入点可以定义成test*) ...
- SqlServer事务回滚(2)
SQL Server 2008中SQL应用系列--目录索引 SQL事务 一.事务概念 事务是一种机制.是一种操作序列,它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行.因此事务是 ...
- mysql数据库 索引 事务和事务回滚
mysql索引 索引相当于书的目录优点:加快数据的查询速度缺点:占物理存储空间,添加,删除,会减慢写的速度 查看表使用的索引 mysql> show index from 表名\G;(\G分行显 ...
- Spring事务回滚和异常类
1.异常的一些基本知识 异常的架构 异常的继承结构:Throwable为基类,Error和Exception继承Throwable.Error和RuntimeException及其子类成为未检查异常( ...
- 浅谈Spring中的事务回滚
使用Spring管理事务过程中,碰到过一些坑,因此也稍微总结一下,方便后续查阅. 1.代码中事务控制的3种方式 编程式事务:就是直接在代码里手动开启事务,手动提交,手动回滚.优点就是可以灵活控 ...
- springmvc 事务回滚说明
Spring中的@Transactional(rollbackFor = Exception.class)属性详解 序言 今天我在写代码的时候,看到了.一个注解@Transactional(rollb ...
- springmvc事务回滚失效
转载:http://blog.csdn.net/z69183787/article/details/37819831 前文提到,最新换了框架,新项目用SpringMVC + Spring JdbcTe ...
随机推荐
- 002服务提供者Eureka
1.POM配置 和普通Spring Boot工程相比,仅仅添加了Eureka.Spring Boot Starter Actuator依赖和Spring Cloud依赖管理 <dependenc ...
- javascript实现的动态添加表单元素input,button等(appendChild)
写一个小系统时,需要动态添加表单元素,按自己的实现方法写了这篇教程! 我想各位在很多网站上都看到过类似的效果! 1.先用document.createElement方法创建一个input元素! 代码如 ...
- 音乐播放插件Aplayer+WebAPI的使用【附下载】
本次介绍的是音乐播放器APlayer结合WebAPI的使用,先给各位看下效果: 上面就是APlayer的效果,然后这插件的地址是 https://github.com/DIYgod/APlayer ...
- Python初学者第二天 用户输入和注释
2day Python基础语法: 1.用户输入和注释 用户输入: 代码注释:# 注释部分不会被执行,或用来帮助理清代码逻辑 2.数据类型:数字 int:整数 long:长整形 注:Pyt ...
- 无缓冲和带缓冲channel的区别
常规定义的channel都是默认不带缓冲的,如下代码所示 package main import ( "fmt" ) func main() { c := make(chan in ...
- 常用的邮箱服务器(SMTP、POP3)地址、端口
sina.com: POP3 服务器地址:pop3.sina.com.cn(端口:110) SMTP 服务器地址:smtp.sina.com.cn(端口:25) sinaVIP: POP3 服务器:p ...
- Oracle Fusion Middleware Supported System check,jdk,java .etc requirements
http://www.oracle.com/technetwork/middleware/ias/downloads/fusion-certification-100350.html 在oracle官 ...
- hdu 5971 Wrestling Match
题目链接: hdu 5971 Wrestling Match 题意:N个选手,M场比赛,已知x个好人,y个坏人,问能否将选手划分成好人和坏人两个阵营,保证每场比赛必有一个好人和一个坏人参加. 题解:d ...
- FBKVOController代码阅读
功能:对kvo机制进行封装,简化使用,简化内存管理: 要素:观察者.被观察者.处理函数. 模式:注册表模式: 机制:对象创建.注册管理.内存管理.处理机制转换: 其它:注册去重: kvo的管理机制:
- 人类主动探索地外文明(METI)活动正在进行中
请看下图: 这是位于俄罗斯克里米亚境内的行星际深空通讯雷达(口径70米,2-300GHz,建造于1978年)的外观.借助该雷达的强大发射功率,有关国际 ...