Как мне вставить коллекцию объектов, используя MyBatis 3.x? - PullRequest
8 голосов
/ 01 августа 2010

Я новичок в MyBatis.

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

Вот пример:

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

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

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

1 Ответ

10 голосов
/ 14 июля 2011

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

Классы 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>
...