Frage

Ich habe einige Probleme mit einer Kartierung in Mybatis für Java und würde mich mit Hilfe freuen. Meine Klassenstruktur ist wie unten:

//Getters/setters omitted for clarity

class Foo 
{
  int id;
  Bar bar;
}

class Bar {
  String x;
  int y;
}

Mein Tisch sieht so aus - dh er ist von der Klassenstruktur entschlossen.

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

Meine Arbeitsanweisung kann mithilfe von Parametern (bar.x, bar.y) de-normalisiert werden.

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

Also das Problem:

Wenn ich meine Auswahl ausführe, möchte ich, dass das resultierende Objekt eine Instanz von Foo ist, die einen Hinweis auf die Bar hat.

Ich glaube nicht, dass ich einen Typ Handler verwenden kann, da dies über eine einzelne Spalte funktioniert, und der Assoziation scheint keinen Sinn zu machen, da "Bar" keine Einheit ist, die in der Datenbank explizit über eine ausländische Schlüsselbeziehung dargestellt wird.

Kann mir jemand bitte die empfohlene Art und Weise zeigen?

Vielen Dank!

War es hilfreich?

Lösung

Haben Sie versucht, eine Ergebnismap -Definition in Ihrem Ibatis SQLMAP zu verwenden?

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

Und dann verweisen Sie in Ihnen SQL einfach auf den Ergebnismap:

<select id="getFooBar" resultMap="foobar-result">
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top