2010-08-01 34 views
8

Tôi là người mới bắt đầu với MyBatis.Làm cách nào để chèn bộ sưu tập các đối tượng bằng MyBatis 3.x?

Tôi chỉ muốn biết cách chèn một tập hợp các đối tượng từ một thể hiện của một lớp. Giả sử tôi có một lớp Người dùng liên quan đến một Lưu ý trong mối quan hệ một-nhiều. Tôi chỉ muốn đề cập rằng tôi đã xây dựng lược đồ của mình bằng cách sử dụng chú thích JPA 2 thông qua hbm2ddl của Hibernate. Tôi sẽ thêm chú thích JPA chính mà tôi đã sử dụng trong mã mẫu bên dưới.

Dưới đây là một ví dụ:

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

Bây giờ, mỗi khi tôi chèn một cái gì đó vào bảng tài khoản tôi có để chèn các trường hợp vào bảng Lưu ý nếu danh sách không phải là trống rỗng. Hãy lưu ý các @JoinColumn trong bảng Note cần có id của Người dùng được chèn vào, mà tôi đã thiết lập để được tự động phát.

Có ai có hoạt động như thế này không? Cảm ơn.

+0

Kiểm tra chi tiết trả lời ở đây: http://stackoverflow.com/questions/23486547/mybatis-batch-insert-update-for-oracle?answertab=votes#tab-top –

Trả lời

10

Khi sử dụng một MyBatis thường xuyên lập bản đồ XML cấu hình bạn có thể sử dụng một cái gì đó như thế này:

Java lớp:

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

có cách nào để thực hiện việc này bằng chú thích không? – sheki

+0

Như tôi đã hiểu, đây sẽ là một trong những điều mà chú thích không thể làm – eaglestorm

+0

Whoa .. Giải pháp của bạn đã cứu ngày của tôi, cảm ơn! Tôi đã sử dụng chỉ đơn giản là "," như dấu phân cách. Cảm ơn! – ronkot

Các vấn đề liên quan