列式存储(二)JFinal如何处理从前台传回来的二维数组
上一篇说到了列式存储,这一篇说它的存储问题,将每个模块的所有属性字段单独存到一张表中,新增页面时,所有的字段都去数据库请求,这样多个模块的新增功能可以共用一个jsp。由于每个模块的字段个数不一样,有的多有的少,这就导致用post请求发送数据时参数个数不能写死,于是只好把整个dataArray传给后台,以前没用过这种写法,自己又是个菜鸟,就用了一个很笨的办法,就是用for循环加getPara()方法接收数据。具体方法见代码:
dataArray结构:

js发送post请求,将数组dataArray作为参数传给后台
function postData() {
$.post("saveData", {
"dataArray" : dataArray, //dataArray是一个二维数组,每个数组元素均为一个对象
"dataArrayLength" : dataArray.length
}, function(data) {
window.history.back();
});
return false;
}
Controller接收数据
public void saveData() {
int dataArrayLength= getParaToInt("dataArrayLength");
List<DataModel> dataList = getParams(dataArrayLength);
boolean result = DataService.srv.saveData(dataArrayLength, dataList); //将数据存到数据库中
}
private List<DataModel> getParams(int dataArrayLength) {
List<DataModel> dataList = Lists.newArrayList();
for (int i = 0; i < dataArrayLength; i++) {
DataModel dataModel = new DataModel();
dataModel.id = getPara("dataArray[" + i + "][ID]");
dataModel.resId = getPara("dataArray[" + i + "][RES_ID]");
dataModel.resType = getPara("dataArray[" + i + "][RES_TYPE]");
dataModel.fieldId = getPara("dataArray[" + i + "][FIELD_ID]");
dataModel.fieldName = getPara("dataArray[" + i + "][FIELD_NAME]"); //属性名
dataModel.dataValue = getPara("dataArray[" + i + "][DATA_VALUE]"); //属性值
dataModel.fieldType = getPara("dataArray[" + i + "][FIELD_TYPE]");
dataModel.fieldSort = getPara("dataArray[" + i + "][FIELD_SORT]");
dataModel.allowNull = getPara("dataArray[" + i + "][ALLOW_NULL]");
dataList.add(dataModel);
}
return dataList;
}
由于一个字段在数据库中即是一条数据,因此汪数据库存储dataList时需要用到事务。
列式存储(二)JFinal如何处理从前台传回来的二维数组的更多相关文章
- 列式存储(三)JFinal DB.tx()事务
上一篇中说道了列式存储中新增表单时后台接收数据问题,在存入数据库时一次插入多条数据,就要用到事务. JFinal中有个封装好的事务应用,用起来非常方便简单. 写法1: Db.tx(new IAtom( ...
- 为什么列式存储会被广泛用在 OLAP 中?
大家好,我是大D. 不知是否有小伙伴们疑问,为什么列式存储会广泛地应用在 OLAP 领域,和行式存储相比,它的优势在哪里?今天我们一起来对比下这两种存储方式的差别. 其实,列式存储并不是一项新技术,最 ...
- 列式存储 V.S. 行式存储
列式数据库 http://zh.wikipedia.org/wiki/%E5%88%97%E5%BC%8F%E6%95%B0%E6%8D%AE%E5%BA%93 列式存储与行式存储 http://my ...
- HBase 是列式存储数据库吗
在介绍 HBase 是不是列式存储数据库之前,我们先来了解一下什么是行式数据库和列式数据库. 行式数据库和列式数据库 在维基百科里面,对行式数据库和列式数据库的定义为:列式数据库是以列相关存储架构进行 ...
- 开源列式存储引擎Parquet和ORC
转载自董的博客 相比传统的行式存储引擎,列式存储引擎具有更高的压缩比,更少的IO操作而备受青睐(注:列式存储不是万能高效的,很多场景下行式存储仍更加高效),尤其是在数据列(column)数很多,但每次 ...
- oracle 12c 列式存储 ( In Memory 理论)
随着Oracle 12c推出了in memory组件,使得Oracle数据库具有了双模式数据存放方式,从而能够实现对混合类型应用的支持:传统的以行形式保存的数据满足OLTP应用:列形式保存的数据满足以 ...
- 【HBase】与关系型数据库区别、行式/列式存储
[HBase]与关系型数据库区别 1.本质区别 mysql:关系型数据库,行式存储,ACID,SQL,只能存储结构化数据 事务的原子性(Atomicity):是指一个事务要么全部执行,要么不执行,也就 ...
- Linux系统:Centos7下搭建ClickHouse列式存储数据库
本文源码:GitHub·点这里 || GitEE·点这里 一.ClickHouse简介 1.基础简介 Yandex开源的数据分析的数据库,名字叫做ClickHouse,适合流式或批次入库的时序数据.C ...
- [转载] 【每周推荐阅读】C-Store:列式存储数据库
Record-based与column-based是数据库和存储系统里面两种不同的data layout.我们的思维逻辑是基于行记录的,即Record-based data layout,数据记录都是 ...
随机推荐
- Auto Mapper02《demo》
学习这些基本上网上都有一些教程或者别人做的demo,我是按照这个方式去学习的.先做个demo,学会如何去使用它,接着去慢慢的了解它是如何的运行的,理解里面的一些基本的基础知识.我们不可以再像 ...
- LeetCode - Pascal's Triangle II
题目: Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3, Return ...
- Win10 IoT C#开发 6 - 4x4矩阵键盘扫描
Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,与以往的Windows版本不同,是为物联网设备专门设计的,硬件也不仅仅限于x86架构,同时可以在ARM架构上运行. 上一章我 ...
- html5学习笔记6-- canvas
绘制普通直线,先看效果图: 实现代码如下: <!DOCTYPE html> <html> <head lang="en"> <meta c ...
- web.xml中openEntityManagerInViewFilter的作用(转)
<filter> <filter-name>openEntityManagerInViewFilter</filter-name> <filter-class ...
- ACm-ICPC Live Archive 7464---Robots
ACm-ICPC Live Archive 7464---Robots Write a program to collect data from robots. We are given two se ...
- Android总结篇系列:Android广播机制
1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通 ...
- Java实现多线程并发
import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util ...
- 当执行sudo时提示“is not in the sudoers file”的解决方案:
出现这种提示是由于普通用户帐号没有权限执行sudo命令,所以需要切换到root身份进行颁发权限: $su -(注意有- ,这和su是不同的,在用命令"su"的时候只是切换到root ...
- java集合-HashMap
HashMap基于哈希表的 Map 接口的实现,以 key-value 的形式存在.在 HashMap 中,key-value 总是会当做一个整体来处理,系统会根据 hash 算法来来计算 key-v ...