gpt4 book ai didi

java - MyBatis,插入复杂对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:57:00 24 4
gpt4 key购买 nike

我有以下场景:

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.

谁能告诉我如何设置它?

最佳答案

resultMap <association> 中的属性需要引用结果映射的名称,而不是 Java 类型:<association property="MyChildObject" resultMap="PrimaryKeyMap"/>

但是,如果 MyChildObject作为单独的表存储在数据库中,嵌套插入是 not supported .您将需要在 Java 中调用这两个插入。 ResultMap 用于选择

如果您只是将一个表中的几列放在一个单独的对象中,那么您可以使用点符号来实现,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>

关于java - MyBatis,插入复杂对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31649089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com