繁体   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