上一篇中说道了列式存储中新增表单时后台接收数据问题,在存入数据库时一次插入多条数据,就要用到事务。

JFinal中有个封装好的事务应用,用起来非常方便简单。

写法1:

Db.tx(new IAtom(){

  @Override

  public boolean run() throw SQLException{

  //在这里写要执行的操作,操作结果result为boolean值
  return result;
  }
});

result值为true则操作成功,为false则回滚。

事务DB.tx()本身也返回一个boolean值,表示最终操作结果是否成功,true为成功,false失败。

写法2:

在方法前声明@Before(Tx.class)

今天部门开会重构代码,自己写的一部分代码被拿出来重构,被高手一重构才发现自己代码写的有多烂,技术不说,逻辑都差很远,学习之路漫漫啊。

接着上一篇,这是DataService中的saveData方法:

public boolean saveData(List<DataModel> dataList) {
  return Db.tx(new IAtom() {
@Override
public boolean run() throws SQLException {
boolean saveDataResult = true;
for (DataModel data : dataList) { //循环遍历dataList将所有data插入数据库
saveDataResult = saveDataResult && ResData.dao.saveData(data); //将所有结果与,只要有一条失败就跳出循环,返回false
if (!saveDataResult) {
break;
}
}
// saveDataResult = saveDataResult && DataSrv.srv.saveDataIds(dataId);在关联表中插入数据
return saveDataResult;
}
});
}

ResData中的saveData方法:

    public boolean saveData(DataModel dataModel) {
return new ResData().set("ID", dataModel.id)
                .set("RES_ID", dataModel.resId)
                .set("RES_TYPE", dataModel.resType)
                .set("FIELD_ID", dataModel.fieldId)
                .set("FIELD_NAME", dataModel.fieldName)
                .set("DATA_VALUE", dataModel.dataValue)
                .set("FIELD_TYPE", dataModel.fieldType)
                .set("FIELD_SORT", dataModel.fieldSort)
                .set("ALLOW_NULL", dataModel.allowNull)
                .save();
}

这是一个往列式存储数据库存储新增表单数据的方法,表单中每一项都需要在数据库中存一条数据,同时还要将dataId插入另一个表中才算新增成功,因此saveDataResult为所有插入操作的与,只要有一条失败就返回false,就会回滚。最后这个方法返回操作的结果,即表单提交成功或失败。

最新文章

  1. NAT概述
  2. 新建一个angularjs+requirejs+bootstrap+typescript+gulp+vscode+git的项目
  3. Win10开发究竟能实现哪些牛逼的功能
  4. 滑动关闭activity
  5. css ul li 水平布局问题
  6. org.springframework.orm.jpa.JpaTransactionManager
  7. 在Sublime Text 3中配置编译和运行Java程序
  8. Linux 创建swap分区
  9. 【JS】JavaScript中的执行环境与作用域
  10. sublime text 3双击选择无法选择$符号
  11. (三)训练HMM模块
  12. python第二课
  13. python CSRF跨站请求伪造
  14. jacascript 判断元素尺寸和位置
  15. python爬虫 - python requests网络请求简洁之道
  16. 硬木地板 JDFZ1667
  17. 复仇之路——我一定要学会linux系统
  18. 第三个Sprint ------第八天
  19. Android 自己写一个打开图片的Activity
  20. BZOJ2425:[HAOI2010]计数(数位DP)

热门文章

  1. Visual Studio Code编写HTML
  2. 【转】jQuery中.bind() .live() .delegate() .on()的区别
  3. Autofac - 服务
  4. JVM简介
  5. 泛函编程(4)-深入Scala函数类
  6. myeclipse打红叉
  7. selenium启动firefox时加载扩展
  8. 高性能 Windows Socket 组件 HP-Socket v2.2.3 正式发布
  9. 代理模式的java实现
  10. Twproject Gantt – 开源的 JavaScript 甘特图组件