3

MyBatis for Javaでのマッピングに問題があり、助けていただければ幸いです。私のクラス構造は次のとおりです。

//Getters/setters omitted for clarity

class Foo 
{
  int id;
  Bar bar;
}

class Bar {
  String x;
  int y;
}

私のテーブルは次のようになります。つまり、クラス構造から非正規化されています。

create table foo_bar (
  id int,
  x varchar,
  y int
);

私の作業中の挿入ステートメントは、(bar.x、bar.y)パラメーターを使用して非正規化することができます。

<insert id="insert" parameterType="foo">
  <![CDATA[
    insert into foo_bar
    (id, x, y) values
    (#{x}, #{bar.x}, #{bar.y})
  ]]>
</insert>

だから、問題:

selectを実行するとき、結果のオブジェクトをBarへの参照を持つFooのインスタンスにします。

これは単一の列で機能するため、型ハンドラーを使用できないと思います。また、「Bar」は外部キー関係を介してデータベースで明示的に表されるエンティティではないため、関連付けは意味をなさないようです。

誰かがこれを行うための推奨される方法を教えてもらえますか?

ありがとう!

4

1 に答える 1

3

ibatis sqlmapでresultMap定義を使用してみましたか?

<resultMap id="foobar-result" class="Foo">
    <result property="id" column="id"/>
    <result property="bar.x" column="x"/>
    <result property="bar.y" column="y"/>
</resultMap>

次に、SQLでresultMapを参照します。

<select id="getFooBar" resultMap="foobar-result">
于 2011-02-01T01:25:06.650 に答える