JFinal DB.tx()事务回滚及lambda表达式应用
2018-06-18 02:30:37来源:未知 阅读 ()
JFinal DB.tx()事务回滚
在要往数据库操作多条数据时,就需要用到事务,JFinal中有封装好的事务应用
写法:
Db.tx(new IAtom(){ @Override public boolean run() throw SQLException{ // 在这里写要执行的操作,操作结果result为boolean值 return result; } });
实际应用示例:
1 // 创建邀请码 2 public String setInviteCode(final WwInviteCodeTemp codeTemp, final Long userId, Integer app) { 3 String inviteCode = ""; 4 if (codeTemp != null) { 5 inviteCode = codeTemp.getCode(); // 获取随机的邀请码 6 final WwInviteCode code = (WwInviteCode) newRecord(new WwInviteCode()); // 保存邀请码 7 code.setApp(app); // 保存产品编号 8 code.setUserId(userId); 9 code.setInviteCode(inviteCode); 10 final Integer finalApp = app; 11 boolean b = use().tx(new IAtom() { 12 @Override 13 public boolean run() throws SQLException { 14 boolean flag = codeTemp.setAction(1).update(); 15 if (flag) { 16 WwInviteCode wwInviteCode = WwInviteCode.dao.findById(userId); 17 if (wwInviteCode != null) { 18 flag = false; 19 } else { 20 flag = code.setApp(finalApp).setUserId(userId).setInviteCode(codeTemp.getCode()).save(); 21 } 22 } 23 return flag; 24 } 25 }); 26 if (b == false) { 27 inviteCode = ""; 28 } 29 } 30 return inviteCode; 31 }
return false或者有异常抛出都会回滚事务,return true才会提交事务,Db.tx()方法是有返回值true/false,可对该返回值作业返回,如果想让run方法中往外层传递变量,可以在外层定义一个final修饰的容器类对象。
修改为lambda表达式方式:
1 // 创建邀请码 2 public String setInviteCode(final WwInviteCodeTemp codeTemp, final Long userId, Integer app) { 3 String inviteCode = ""; 4 if (codeTemp != null) { 5 inviteCode = codeTemp.getCode(); // 获取随机的邀请码 6 final WwInviteCode code = (WwInviteCode) newRecord(new WwInviteCode()); // 保存邀请码 7 code.setApp(app); // 保存产品编号 8 code.setUserId(userId); 9 code.setInviteCode(inviteCode); 10 final Integer finalApp = app; 11 boolean b = use().tx(() -> { 12 boolean flag = codeTemp.setAction(1).update(); 13 if (flag) { 14 WwInviteCode wwInviteCode = WwInviteCode.dao.findById(userId); 15 if (wwInviteCode != null) { 16 flag = false; 17 } else { 18 flag = code.setApp(finalApp).setUserId(userId).setInviteCode(codeTemp.getCode()).save(); 19 } 20 } 21 return flag; 22 }); 23 if (b == false) { 24 inviteCode = ""; 25 } 26 } 27 return inviteCode; 28 }
了解Java Lambda可参考:
30分钟Java Lambda入门教程
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:6.JXL操作Excel
下一篇:工厂方法模式
- 聊聊微服务架构及分布式事务解决方案! 2020-06-10
- Spring12_Spring中的事务控制 2020-06-07
- Spring事务的传播属性 2020-06-05
- Spring08_纯注解实战_支持事务版本 2020-05-29
- 突击Java分布式面试-事务解决方案解析 2020-05-19
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash