[英]Map java.util.Map field with MyBatis
我想使用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>
我已经对此进行了一些研究,并向MyBatis Google小组进行了询问,因为我对自己如何进行感兴趣。
目前看来,这是不可能的。 如果要使用<collection>
映射在Foo对象中使用List<Bar>
,则可以轻松使其工作。
我尝试使用<collection>
返回一个Map,但是它不理解我要它执行的操作。
我现在知道的唯一方法是用两个查询/映射自己管理它-一个用Foo的所有字段( 除了 Bar的集合)填充Foo。 然后是一个查询映射(如下所示),以拉回Map中的所有Bar,然后将其自己插入Foo对象:
@Select("SELECT bar_id, bar_name FROM bar WHERE foo_id = #{id}")
@MapKey("bar_name")
Map<String, Bar> getBarsById(int id);
这将返回一个地图,其中每个条都有一个条目,其中条目的键是“ bar_name”列的值。
MyBatis团队建议在将来的版本中提出对此功能的发布请求。
关于MyBatis和HashMap,实际上就是它。
HashMap类实现Map。 地图是一个界面
因此, 因为HashMap实现Map,所以HashMap是Map。
是否使用泛型键,也要在其末尾使用值。
http://docs.oracle.com/javase/6/docs/api/java/util/HashMap.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.