簡體   English   中英

MyBatis,插入復雜對象

[英]MyBatis, insert with complex object

我有以下場景:

public class MyObj{
    private String myField_1
    private String myField_2
    private MyChildObj myChild
    // Constructor & get/set
}

public class MyChildObj{
    private String myField_3
    private String myField_4
    // Constructor & get/set
}

在我的Query.xml上,我用這種方式寫了插入:

<insert id="insertMyObj" parameterType="MyObj">
    INSERT INTO MY_TABLE    (   FIELD_1,
                                FIELD_2,
                                FIELD_3,
                                FIELD_4)
    values  (   #{myField_1},
                #{myField_2},
                #{myField_3},
                #{myField_4},
    )
</insert>

閱讀mybatis結果地圖指南后,我嘗試在mybatis-config.xml文件中添加以下行:

<typeAliases>
    <typeAlias alias="MyObj"        type="myPackage.MyObj"/>
    <typeAlias alias="MyChildObj"   type="myPackage.MyChildObj"/>
</typeAliases>

<resultMap id="insertObj" type="MyObj">
    <result property="myField_1"  column="FIELD_1"/>
    <result property="myField_2"  column="FIELD_2"/>
    <association property="PrimaryKeyMap" resultMap="PrimaryKey"/>
</resultMap>

<resultMap id="PrimaryKeyMap" type="PrimaryKey">
    <result property=myField_3  column="FIELD_3"/>
    <result property="myField_4"  column="FIELD_4"/>
</resultMap>

但我不斷收到以下錯誤:

### Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance.  Cause: org.xml.sax.SAXParseException; lineNumber: xx; columnNumber: xx; Element type "resultMap" must be declared.

誰能澄清我如何設置這個?

<association>resultMap屬性需要引用結果映射的名稱,而不是Java類型: <association property="MyChildObject" resultMap="PrimaryKeyMap"/>

但是,如果MyChildObject作為單獨的表存儲在數據庫中, 則不支持嵌套插入。 您需要在Java中調用兩個插入。 ResultMaps用於選擇

如果您只是將一個表中的幾列放在單獨的對象中,那么可以使用點表示法myChildObject.myField_4來執行此myChildObject.myField_4 像這樣的東西:

<insert id="insertMyObj" parameterType="MyObj">
  INSERT INTO MY_TABLE    (   FIELD_1,
                              FIELD_2,
                              FIELD_3,
                              FIELD_4)
  values  (   #{myField_1},
              #{myField_2},
              #{myChildObject.myField_3},
              #{myChildObject.myField_4},
  )
</insert>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM