問題描述:
mybatis 版本3.0.5 其他版本可能不存在這個問題,是可能哇 ,因為我遇到的項目是一個年代久遠的項目。所以用的是3.0.5這個版本。
mybatis用resultType = map接查詢的返回值,這時候如果sql寫的是select aaa from ...................,那么返回值map中會出現 key為 aaa 和 AAA的兩個值,他們的value
是一樣的。
這時候你可能會想到查詢sql起別名這個操作來解決這個問題,但是在這個版本下,起了別名也還是會有這個問題。
查詢大佬博客然后看源碼發現,這個版本中的源碼就是小寫的key然后自動在補一個大寫的key進去,也有人說這個問題是這個版本的bug.
我的解決辦法就是 sql用大寫select AAA ......,然后拿出來再轉一下
LinkedHashMap<String, String> map1 = new LinkedHashMap<String, String>();
for (Map.Entry<String, String> entry : map.entrySet()) {
map1.put(entry.getKey().toLowerCase(),String.valueOf(entry.getValue()));
}