MyBatis,插入复杂对象
我有以下情况:
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 INTO MY_TABLE ( FIELD_1, FIELD_2, FIELD_3, FIELD_4) values ( #{myField_1}, #{myField_2}, #{myField_3}, #{myField_4}, )
阅读mybatis结果地图指南后,我尝试在mybatis-config.xml文件中添加以下行:
但我一直收到以下错误:
### 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
属性需要引用结果映射的名称,而不是Java类型:
但是,如果MyChildObject
作为单独的表存储在数据库中, 则不支持嵌套插入。 您需要在Java中调用两个插入。 ResultMaps用于选择 。
如果您只是将一个表中的几列放在一个单独的对象中,那么可以使用点表示法myChildObject.myField_4
来完成此myChildObject.myField_4
。 像这样的东西:
INSERT INTO MY_TABLE ( FIELD_1, FIELD_2, FIELD_3, FIELD_4) values ( #{myField_1}, #{myField_2}, #{myChildObject.myField_3}, #{myChildObject.myField_4}, )