[英]hashmap resultmap in mybatis
我有一個像這樣的Java類:
public class Team {
private HashMap<String, User> users;
private int id_team;
private String nome;
...
}
和這樣的xml文件:
<resultMap id="userJoinTeamResultMap" type="Team">
<id column="id_team" property="id_team" />
<result column="nome" property="nome" />
<collection property="users" javaType="HashMap" >
<id column="id_user" property="id" />
<result column="nome_user" property="nome" />
<result column="cognome" property="cognome" />
<result column="email" property="email" />
</collection>
</resultMap>
和選擇,它可以做的事。 但是,當我嘗試獲取哈希圖中的值時:
ArrayList<Team> listaTeam = getBlmTeam().getUserTeamFromCorso(jsonInput.getInt("id_corso"));
Iterator<Team> it = listaTeam.iterator();
while(it.hasNext()){
Team t = it.next();
Collection<String> set = t.getUsers().keySet();
Iterator it2 = set.iterator();
while(it2.hasNext()){
Object k = it2.next();
System.out.println("key:"+k.toString()+" value:"+t.getUsers().get(k));
}}
我的價值觀是:
key:id value:103
key:email value:HSXB736GB
key:id value:105
key:email value:ZQFD4U
..
什么鑰匙是??? 在第一個小組中,有兩個用戶具有鍵102和103。但是每個用戶都使用鍵“ id”,因此它們被覆蓋。
您沒有正確使用HashMap
。 你不想地圖
id -> 103
email -> HSXB736GB
正如您所發現的,如果這樣做,您將只能在其中擁有一個用戶,因為密鑰必須是唯一的,因此當您添加新用戶時,該id
將被覆蓋。
您要做的是將ID映射到用戶對象
103 -> [user instance with ID 103]
105 -> [user instance with ID 105]
這意味着您需要HashMap<Integer,Utente>
而不是HashMap<String,Utente>
HashMap<Integer,Utente>
。 然后你可以做類似的事情
Utente someUser = ...
map.put(someUser.getId(), someUser);
之后,您將可以從地圖中檢索用戶
Utente someUser = map.get(id);
只要您知道ID。
我解決了
private Arraylist<User> users;
和
<collection property="users" javaType="ArrayList">
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.