2010-08-01 25 views
8

Я новичок в MyBatis.Как вставить коллекцию объектов с помощью MyBatis 3.x?

Я просто хочу знать, как вставить коллекцию объектов из экземпляра класса. Скажем, у меня есть класс User, связанный с примечанием в отношениях «один ко многим». Я просто хотел бы упомянуть, что я построил свою схему, используя аннотации JPA 2 через hbm2ddl Hibernate. Я добавлю ключевые аннотации JPA, которые я использовал в примере кода ниже.

Вот пример:

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

Теперь, каждый раз, когда я что-то вставить в таблицу User я должен вставить экземпляры в таблицу Примечание Если список не пуст. Обратите внимание на таблицу @JoinColumn в таблице Note, которая должна иметь идентификатор вставленного пользователя, который я установил для автогенерации.

У кого-нибудь есть что-то подобное? Благодарю.

+0

Проверить детали Ответ здесь: HTTP://stackoverflow.com/questions/23486547/mybatis-batch-insert-update-for-oracle?answertab=votes#tab-top –

ответ

10

При использовании обычного MyBatis отображения XML конфигурации вы можете использовать что-то вроде этого:

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

Есть ли способ сделать это Используя аннотации? – sheki

+0

Как я понимаю, это была бы одна из тех вещей, которые аннотации не могут сделать – eaglestorm

+0

Whoa .. Ваше решение спасло мой день, спасибо! Я использовал просто «,» как разделитель. Благодаря! – ronkot