纵表的数据处理方式
发布时间:2020-12-14 04:51:23 所属栏目:大数据 来源:网络整理
导读:众所周知,纵表容易扩展,但是数据不直观,应用起来比较麻烦,横表容易理解,数据便于处理,但是如果增加字段,就需要修改数据库。两者有不同的应用场景,具体参考我的另一篇文章: https://blog.csdn.net/hanruikai/article/details/79730028 在设计信用卡
众所周知,纵表容易扩展,但是数据不直观,应用起来比较麻烦,横表容易理解,数据便于处理,但是如果增加字段,就需要修改数据库。两者有不同的应用场景,具体参考我的另一篇文章: https://blog.csdn.net/hanruikai/article/details/79730028 在设计信用卡模块时,由于信用卡过滤条件需要配置,便于灵活扩展,所以采用了纵表的处理方式。结构如下: 参数key为过滤条件。 在数据处理时,比如读取所有信用卡信息以及配置参数,利用map存储,key为credit id,value为一个map,用来存储参数。 可以对某个key单独进行特殊逻辑处理,比如把value拆分。 最后,遍历map,key为信用卡id,这个前端并不关心,去掉这个层,把作为value对map放入list中,返回前端即可 for (CreditCardInfoAndParam creditCardInfoAndParam : creditCardInfoAndParamList) { if (!creditIdList.contains(creditCardInfoAndParam.getId())) { creditIdList.add(creditCardInfoAndParam.getId()); } JSONObject paramJson = json.getJSONObject(creditCardInfoAndParam.getId().toString()); if (paramJson == null) { paramJson = new JSONObject(); paramJson.put("creditCardName",creditCardInfoAndParam.getCreditCardName()); paramJson.put("creditCardOrder",creditCardInfoAndParam.getCreditCardOrder()); paramJson.put("state",creditCardInfoAndParam.getState()); paramJson.put("bankId",creditCardInfoAndParam.getBankId()); } if (creditCardInfoAndParam.getParamKey().equalsIgnoreCase(Constants.BRIGHT_SPOT)){ paramJson.put(creditCardInfoAndParam.getParamKey(),creditCardInfoAndParam.getParamValue().split(",")); } else { paramJson.put(creditCardInfoAndParam.getParamKey(),creditCardInfoAndParam.getParamValue()); } json.put(creditCardInfoAndParam.getId().toString(),paramJson); } for (Long id:creditIdList){ creditCardArray.add(json.getJSONObject(id.toString())); }jsonobject其实就是个map,jsonarray是个list (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |