【问题标题】:How do I insert collection of objects using MyBatis 3.x?如何使用 MyBatis 3.x 插入对象集合?
【发布时间】:2010-08-01 05:54:55
【问题描述】:

我是 MyBatis 的初学者。

我只想知道如何从一个类的实例中插入一组对象。假设我有一个类 User 与一对多关系中的 Note 相关。我只想提一下,我通过 Hibernate 的 hbm2ddl 使用 JPA 2 注释构建了我的模式。我将添加我在下面的示例代码中使用的关键 JPA 注释。

这是一个示例:

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

现在,每次我在 User 表中插入一些东西时,如果列表不为空,我必须将实例插入到 Note 表中。记下 Note 表中的 @JoinColumn,它应该具有插入用户的 id,我已将其设置为自动生成。

有没有人有这样的工作?谢谢。

【问题讨论】:

标签: collections insert orm ibatis mybatis


【解决方案1】:

当使用常规的 MyBatis XML 映射配置时,您可以使用如下内容:

Java 类:

class EnclosingType {
  private List<ElementType> elements;
}

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

映射器 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>

【讨论】:

  • 有没有办法使用注释来做到这一点?
  • 据我了解,这将是注释无法做到的事情之一
  • 哇......您的解决方案拯救了我的一天,谢谢!我只是使用简单的“,”作为分隔符。谢谢!
  • 在这里查看详细答案stackoverflow.com/questions/23486547/…
  • 记住插入全部被视为一个事务,如果您在任何列中使用序列,这将不起作用
猜你喜欢
  • 2013-12-10
  • 2016-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-20
  • 1970-01-01
相关资源
最近更新 更多