如何將數據庫查詢出來的結果集的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