纵表的数据处理方式

众所周知,纵表容易扩展,但是数据不直观,应用起来比较麻烦,横表容易理解,数据便于处理,但是如果增加字段,就需要修改数据库。两者有不同的应用场景,具体参考我的另一篇文章:

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


猜你喜欢

转载自blog.csdn.net/hanruikai/article/details/79866258