2010-08-01 10 views
8

Je suis un débutant avec MyBatis.Comment insérer une collection d'objets en utilisant MyBatis 3.x?

Je veux juste savoir comment insérer une collection d'objets d'une instance d'une classe. Dire que j'ai un utilisateur de classe lié à une note dans une relation un-à-plusieurs. Je voudrais simplement mentionner que j'ai construit mon schéma en utilisant les annotations de JPA 2 via hbm2ddl de Hibernate. Je vais ajouter les annotations JPA clés que j'ai utilisées dans l'exemple de code ci-dessous.

Voici un exemple:

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

Maintenant, chaque fois que j'insérer quelque chose dans la table utilisateur Je dois insérer des occurrences dans la table Remarque si la liste n'est pas vide. Prenez note du @JoinColumn dans la table de note qui devrait avoir l'id de l'utilisateur inséré, que j'ai réglé pour être générée automatiquement.

Est-ce que quelqu'un a quelque chose comme ça qui fonctionne? Merci.

+0

Vérifiez les détails Réponse: http://stackoverflow.com/questions/23486547/mybatis-batch-insert-update-for-oracle?answertab=votes#tab-top –

Répondre

10

Lorsque vous utilisez une configuration de mappage XML régulière mybatis vous pouvez utiliser quelque chose comme ceci:

classes Java:

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

Y a-t-il un moyen de faire cela? Utiliser des annotations? – sheki

+0

Si je comprends bien ce serait une de ces choses que les annotations ne peuvent pas faire – eaglestorm

+0

Whoa .. Votre solution a sauvé ma journée, merci! J'utilisais simplement "," comme séparateur. Merci! – ronkot