2010-08-01 7 views
8

Ich bin ein Anfänger mit MyBatis.Wie füge ich Objekte mit MyBatis 3.x ein?

Ich möchte nur wissen, wie Sie eine Sammlung von Objekten aus einer Instanz einer Klasse einfügen. Angenommen, ich habe eine Klasse, die mit einer Note in einer Eins-zu-viele-Beziehung verwandt ist. Ich möchte nur erwähnen, dass ich mein Schema mit JPA 2 Annotationen über Hibernate's hbm2ddl erstellt habe. Ich füge die Schlüssel-JPA-Anmerkungen hinzu, die ich im folgenden Beispielcode verwendet habe.

Hier ist ein Beispiel:

@Entity 
public class User { 
    ... 
    @OneToMany 
    @JoinColumn(name="user") 
    public List<Note> getNotes() {...} 
    ... 
} 

Nun, jedes Mal wenn ich etwas in User-Tabelle einfügen Ich habe Instanzen in die Hinweis-Tabelle einzufügen, wenn die Liste nicht leer ist. Notieren Sie sich die @JoinColumn in der Note-Tabelle, die die ID des eingefügten Benutzers haben sollte, die ich für die automatische Generierung festgelegt habe.

Hat jemand so etwas funktioniert? Vielen Dank.

+0

prüfen Detail hier Antwort: http://stackoverflow.com/questions/23486547/mybatis-batch-insert-update-for-oracle?answertab=votes#tab-top –

Antwort

10

Bei Verwendung eines regelmäßigen Mybatis XML-Mapping-Konfiguration Sie so etwas wie diese verwenden:

Java-Klassen:

class EnclosingType { 
    private List<ElementType> elements; 
} 

class ElementType { 
    String a; 
    String b; 
    (...) 
} 

Mapper xml:

<mapper 
    namespace="my.example.ElementType"> 
    <insert id="insertElements" parameterType="EnlosingType"> 
     INSERT INTO ELEMENTTYPE (enclosingTypeId, column_a, column_b) 
     VALUES 
     <foreach item="element" index="index" collection="elements" 
      open="(" separator="),(" close=")"> 
      #{id}, #{element.a}, #{element.b} 
     </foreach> 
    </insert> 
</mapper> 
+6

gibt es eine Möglichkeit, dies zu tun Mit Anmerkungen? – sheki

+0

Wie ich es verstehe, wäre dies eines der Dinge, die Anmerkungen nicht tun können – eaglestorm

+0

Whoa .. Ihre Lösung rettete meinen Tag, danke! Ich habe nur einfaches "," als Trennzeichen verwendet. Vielen Dank! – ronkot