2010-08-01 23 views
8

Soy un principiante con MyBatis.¿Cómo inserto la colección de objetos usando MyBatis 3.x?

Solo quiero saber cómo insertar una colección de objetos de una instancia de una clase. Supongamos que tengo un Usuario de clase relacionado con una Nota en una relación uno a muchos. Solo me gustaría mencionar que construí mi esquema utilizando anotaciones JPA 2 a través del hbm2ddl de Hibernate. Agregaré las anotaciones clave de JPA que utilicé en el código de ejemplo a continuación.

He aquí una muestra:

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

Ahora, cada vez que insertar algo en la tabla de usuario que tengo que insertar en la tabla de instancias Nota si la lista no está vacía. Tome nota de @JoinColumn en la tabla de notas que debe tener el id del usuario insertado, que he configurado para que se genere automáticamente.

¿Alguien ha conseguido que algo así funcione? Gracias.

+0

Comprobar los detalles Respuesta aqui: http://stackoverflow.com/questions/23486547/mybatis-batch-insert-update-for-oracle?answertab=votes#tab-top –

Respuesta

10

Cuando se utiliza un MyBatis regulares de configuración de mapeo XML que puede utilizar algo como esto:

clases 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

¿hay alguna manera de hacerlo utilizando anotaciones? – sheki

+0

Según tengo entendido, esta sería una de esas cosas que las anotaciones no pueden hacer – eaglestorm

+0

Whoa .. Su solución me salvó el día, ¡gracias! Estaba usando simplemente "," como separador. ¡Gracias! – ronkot

Cuestiones relacionadas