列式存储(二)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时需要用到事务。

转载于:https://www.cnblogs.com/ltchu/p/5972923.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值