我想使用MyBatis将数据映射到java.util.Map
属性。我有这样简单的POJO:
public class Bar {
...fields
}
public class Foo {
private Map<String, Bar> bars;
public Foo() {
bars = new HashMap<String, Bar>();
}
...
}
如何使用MyBatis将数据映射到条形图?下面的示例不起作用,因为它始终将新地图设置为字段。
<resultMap id="fooResultMap" type="Foo">
...attributes
<association property="bars" resultMap="barResultMap" />
</resultMap>
<resultMap id="barResultMap" type="map">
<result property="key" column="bar_key" />
<association property="value" javaType="Bar">
...attributes
</association>
</resultMap>
答案 0 :(得分:3)
我已经对此进行了一些研究,并在MyBatis Google小组上询问过,因为我对自己如何做这件事感兴趣。
目前,这似乎无法实现。如果您希望使用List<Bar>
映射在Foo对象中<collection>
,则可以轻松地使其工作。
我尝试使用<collection>
返回一张地图,但它不明白我要求它做什么。
我现在知道这样做的唯一方法就是自己使用两个查询/映射来管理它 - 一个用Foo填充其所有字段而不是它的Bars集合。然后像下面列出的那样查询映射来拉回Map中的所有Bars并自己将其插入到Foo对象中:
@Select("SELECT bar_id, bar_name FROM bar WHERE foo_id = #{id}")
@MapKey("bar_name")
Map<String, Bar> getBarsById(int id);
这将返回一个Map,每个条形一个条目,条目的键是“bar_name”列的值。
MyBatis团队建议在将来的版本中提出此功能的问题请求。
答案 1 :(得分:-11)
关于MyBatis和HashMap,实际上就是它。
HashMap类实现Map。 地图是一个界面
因此因为HashMap实现了Map,HashMap是Map。
是否使用泛型键,值的结尾与否。
http://docs.oracle.com/javase/6/docs/api/java/util/HashMap.html