繁体   English   中英

使用MyBatis映射java.util.Map字段

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM