2

java.util.MapMyBatisでデータを属性にマッピングしたいと考えています。次のような単純な 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>
4

2 に答える 2

3

私はこれについていくつかの調査を行い、自分でこれを行う方法に興味があるので、MyBatis Google グループで質問しました。

現時点では、これは不可能のようです。マッピングList<Bar>を使用して Foo オブジェクトにが必要な場合は、簡単に機能させることができます。<collection>

マップを返すために使用しようとし<collection>ましたが、何を求めているのか理解できません。

現在これを行う唯一の方法は、2つのクエリ/マッピングを使用して自分で管理することです。次に、以下にリストされているようなクエリ マッピングを使用して、マップ内のすべてのバーを引き戻し、それを自分の Foo オブジェクトにプラグインします。

@Select("SELECT bar_id, bar_name FROM bar WHERE foo_id = #{id}")
@MapKey("bar_name")
Map<String, Bar> getBarsById(int id);

これにより、バーごとに 1 つのエントリを持つマップが返されます。エントリのキーは "bar_name" 列の値です。

MyBatis チームは、将来のリリースでこの機能のイシュー リクエストを提出することを推奨しました。

于 2012-07-18T13:02:35.873 に答える
-11

MyBatis と HashMap については、事実上そのとおりです。

HashMap クラスは Map を実装します。地図はインターフェースです

したがって、HashMap は Map を実装しているため、HashMap は Map です。

ジェネリックキー、値を最後に使用するかどうか。

http://docs.oracle.com/javase/6/docs/api/java/util/HashMap.html

于 2012-07-15T22:42:22.797 に答える