最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mybatis 返回Map類型key改為小寫的操作

 更新時間:2020年12月02日 09:18:13   作者:caixiajia  
這篇文章主要介紹了mybatis 返回Map類型key改為小寫的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

默認情況下,當resultType=“java.util.Map”時,返回的key值都是大寫的。

現(xiàn)在想key改成自己想要的,只需為查詢出來的字段增加個別名即可。

如:

<select id="getStudentList" resultType="java.util.Map">
select t.name as "sName",t.sex as "sSex"
 from student
</select>

as 后的雙引號很關(guān)鍵,否則不起作用。

補充知識:mybatis返回map key值大小寫去重,CaseInsensitiveMap、LinkedCaseInsensitiveMap源碼

今天在寫項目的時候遇見一個問題:

編寫的是一套完全解耦的模塊,用于利用freemarker模板動態(tài)拼接sql

然而拼接好的sql只能用LinkedHashMap返回結(jié)果集,保證數(shù)據(jù)有序,但是在數(shù)據(jù)輸出的時候,mybatis 返回了key 相同,但大小寫不同的數(shù)據(jù),

在處理這個數(shù)據(jù)的時候,首先我選用了利用value值相同去做處理,但是有些數(shù)據(jù)的value值相同但是key不同

看來只能用key去做處理,首先我用了CaseInsensitiveMap 將linkedHashMap的數(shù)據(jù)放入到CaseInsensitiveMap 中,

輸出的時候結(jié)果確實起到了去重的效果,但是在excel導(dǎo)出的時候要對應(yīng)header標題頭,mybatis 查詢的順序跟header 抬頭是對應(yīng)的,但是取出的順序卻不是對應(yīng)的,

因此只能通過排序進行數(shù)據(jù)對應(yīng),但是排序的話只能使用LinkedHashMap去記住順序

因此查詢了資料發(fā)現(xiàn)了LinkedCaseInsensitiveMap

LinkedCaseInsensitiveMap 繼承了 LinkedHashMap,可以檢測關(guān)鍵字(不區(qū)分大小寫)的唯一性,所以 ok bug完美解決

附加 LinkedCaseInsensitiveMap 源碼

package org.springframework.util;
 
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;
 
public class LinkedCaseInsensitiveMap<V> extends LinkedHashMap<String, V> {
 private Map<String, String> caseInsensitiveKeys;
 private final Locale locale;
 
 public LinkedCaseInsensitiveMap() {
 this((Locale)null);
 }
 
 public LinkedCaseInsensitiveMap(Locale locale) {
 this.caseInsensitiveKeys = new HashMap();
 this.locale = locale != null?locale:Locale.getDefault();
 }
 
 public LinkedCaseInsensitiveMap(int initialCapacity) {
 this(initialCapacity, (Locale)null);
 }
 
 public LinkedCaseInsensitiveMap(int initialCapacity, Locale locale) {
 super(initialCapacity);
 this.caseInsensitiveKeys = new HashMap(initialCapacity);
 this.locale = locale != null?locale:Locale.getDefault();
 }
 
 public V put(String key, V value) {
 String oldKey = (String)this.caseInsensitiveKeys.put(this.convertKey(key), key);
 if(oldKey != null && !oldKey.equals(key)) {
  super.remove(oldKey);
 }
 
 return super.put(key, value);
 }
 
 public void putAll(Map<? extends String, ? extends V> map) {
 if(!map.isEmpty()) {
  Iterator var2 = map.entrySet().iterator();
 
  while(var2.hasNext()) {
  Entry entry = (Entry)var2.next();
  this.put((String)entry.getKey(), entry.getValue());
  }
 
 }
 }
 
 public boolean containsKey(Object key) {
 return key instanceof String && this.caseInsensitiveKeys.containsKey(this.convertKey((String)key));
 }
 
 public V get(Object key) {
 if(key instanceof String) {
  String caseInsensitiveKey = (String)this.caseInsensitiveKeys.get(this.convertKey((String)key));
  if(caseInsensitiveKey != null) {
  return super.get(caseInsensitiveKey);
  }
 }
 
 return null;
 }
 
 public V getOrDefault(Object key, V defaultValue) {
 if(key instanceof String) {
  String caseInsensitiveKey = (String)this.caseInsensitiveKeys.get(this.convertKey((String)key));
  if(caseInsensitiveKey != null) {
  return super.get(caseInsensitiveKey);
  }
 }
 
 return defaultValue;
 }
 
 public V remove(Object key) {
 if(key instanceof String) {
  String caseInsensitiveKey = (String)this.caseInsensitiveKeys.remove(this.convertKey((String)key));
  if(caseInsensitiveKey != null) {
  return super.remove(caseInsensitiveKey);
  }
 }
 
 return null;
 }
 
 public void clear() {
 this.caseInsensitiveKeys.clear();
 super.clear();
 }
 
 public Object clone() {
 LinkedCaseInsensitiveMap copy = (LinkedCaseInsensitiveMap)super.clone();
 copy.caseInsensitiveKeys = new HashMap(this.caseInsensitiveKeys);
 return copy;
 }
 
 protected String convertKey(String key) {
 return key.toLowerCase(this.locale);
 }
}

以上這篇mybatis 返回Map類型key改為小寫的操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot2.0整合jackson配置日期格式化和反序列化的實現(xiàn)

    SpringBoot2.0整合jackson配置日期格式化和反序列化的實現(xiàn)

    這篇文章主要介紹了SpringBoot2.0整合jackson配置日期格式化和反序列化的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • Java遞歸算法詳解(動力節(jié)點整理)

    Java遞歸算法詳解(動力節(jié)點整理)

    Java遞歸算法是基于Java語言實現(xiàn)的遞歸算法。遞歸算法對解決一大類問題很有效,它可以使算法簡潔和易于理解。接下來通過本文給大家介紹Java遞歸算法相關(guān)知識,感興趣的朋友一起學(xué)習吧
    2017-03-03
  • 詳解JAVAEE——SSH三大框架整合(spring+struts2+hibernate)

    詳解JAVAEE——SSH三大框架整合(spring+struts2+hibernate)

    這篇文章主要介紹了詳解JAVAEE——SSH三大框架整合(spring+struts2+hibernate),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Java實現(xiàn)檢查多個時間段是否有重合

    Java實現(xiàn)檢查多個時間段是否有重合

    這篇文章主要為大家詳細介紹了如何使用Java實現(xiàn)檢查多個時間段是否有重合,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習一下
    2025-02-02
  • Java Quartz觸發(fā)器CronTriggerBean配置用法詳解

    Java Quartz觸發(fā)器CronTriggerBean配置用法詳解

    這篇文章主要介紹了Java Quartz觸發(fā)器CronTriggerBean配置用法詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • MyBatis中防止SQL注入講解

    MyBatis中防止SQL注入講解

    這篇文章主要介紹了MyBatis中防止SQL注入,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-12-12
  • Maven實現(xiàn)項目構(gòu)建工具

    Maven實現(xiàn)項目構(gòu)建工具

    本文主要介紹了Maven實現(xiàn)項目構(gòu)建工具,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2022-07-07
  • Java簡明解讀代碼塊的應(yīng)用

    Java簡明解讀代碼塊的應(yīng)用

    所謂代碼塊是指用"{}"括起來的一段代碼,根據(jù)其位置和聲明的不同,可以分為普通代碼塊、構(gòu)造塊、靜態(tài)塊、和同步代碼塊。如果在代碼塊前加上 synchronized關(guān)鍵字,則此代碼塊就成為同步代碼塊
    2022-07-07
  • Spring Cloud EureKa Ribbon 服務(wù)注冊發(fā)現(xiàn)與調(diào)用

    Spring Cloud EureKa Ribbon 服務(wù)注冊發(fā)現(xiàn)與調(diào)用

    這篇文章主要介紹了Spring Cloud EureKa Ribbon 服務(wù)注冊發(fā)現(xiàn)與調(diào)用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • SpringData整合ElasticSearch實現(xiàn)CRUD的示例代碼(超詳細)

    SpringData整合ElasticSearch實現(xiàn)CRUD的示例代碼(超詳細)

    本文主要介紹了SpringData整合ElasticSearch實現(xiàn)CRUD的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2023-07-07

最新評論

塔城市| 阿尔山市| 腾冲县| 商南县| 灌云县| 五台县| 东安县| 柳林县| 囊谦县| 舒城县| 饶平县| 东丽区| 张家港市| 邛崃市| 台湾省| 汾西县| 陕西省| 曲靖市| 喜德县| 册亨县| 邵东县| 桐梓县| 清丰县| 安岳县| 衡山县| 上虞市| 崇文区| 雷波县| 龙海市| 加查县| 柳江县| 翁牛特旗| 靖江市| 大英县| 昌图县| 卢湾区| 阿城市| 邢台县| 来安县| 抚顺县| 闽清县|