簡體   English   中英

Mybatis中的哈希圖結果圖

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM