如何将数据库查询出来的结果集的key全转换为大写的


1. 功能需求 : 

  利用mybatis查询出结果集之后返回list<Map> ,如何将Map当中的key全部转换为大写的。

 

2. 分析

  尝试从mybatis的typeHandler或者其他Handler出手? 或许可行。

  第二,从返回到客户端的JSON之前进行全部转换-》多线程?

 

3. 今天,先讲述下第二种方案 : 

    先将map使用lamda表达式完成改装

    // 把查询出来的Map的key 变为大写的
    private static Map genChildParamMap(Object object) {
        if (object instanceof Map) {
            Map<String, Object> paramMap = (Map<String, Object>) JSONObject.toJSON(object);
            Map<String, Object> newMap = Maps.newHashMapWithExpectedSize(paramMap.size());
            paramMap.entrySet().stream().filter(me -> me.getValue() != null).forEach(me ->
                    newMap.put(me.getKey().toUpperCase(), genChildParamMap(me.getValue())));
            return newMap;
        }else {
            return null;
        }
    }

    然后对外部的LIST再次进行转换一次 : 

/**
     *
     * 功能描述:
     *        把传递进来的List<Map> 结果集中的每一条Map的key变为大写的
     * @param:  List<Map<String,Object>>
     * @return:    List<Map<String,Object>>
     * @date: 2018/11/13 14:12
     */
     public static List<Map> transfListMap(List<Map> sourceList){
         List<Map> resultList = new ArrayList<>(Lists.newArrayListWithExpectedSize(sourceList.size()));
         sourceList.forEach( tranObj -> resultList.add(genChildParamMap(tranObj)));
         return resultList;
     }

    测试如下 : 

 

 aResult = JsonUtil.transfListMap(aResult);   // 转换key为大写的

    我测试了下,对于本地的mysql的100000条记录的转换基本在1S左右。也许内存空间浪费比较大。

aResult = JsonUtil.transfListMap(aResult);   // 转换key为大写的


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM