使用Mybatis中的注释的对象的嵌套映射

时间:2018-12-07 13:42:50

标签: java orm mybatis

我有这样的POJO

 public class Application
{
  private String dcn;
  private Party applicant;
  private Date createdDateTime;
  private NamedValue[] flags;
  // containing getter and setters
  }
public class Party
{
  private String lastName;
  private String rfc;
  // containing getter and setters..
  }

我的表格列是..

dcn,applicantLastName,applicantRFC,createdDateTime,flag

都是varchar类型。  我正在使用注释从上表中获取数据,并使用下面的查询将其设置为POJO。

@Select("SELECT dcn,applicantLastName,applicantRFC,createdDateTime,flag FROM DnA_Application WHERE dcn=#{dcn}")
  List<Application> getByProc(int proc);

我没有使用上述配置从表中获取Party bean的数据。请帮助。

1 个答案:

答案 0 :(得分:0)

无法使用注释映射联接的结果。 mybatis不支持此功能。以下是documentation的引文:

  

您会注意到,注释不支持联接映射   API。这是由于Java注释中的限制所致   允许循环引用

一种映射方法是在xml中定义一个结果映射,并通过@ResultMap对其进行引用。

mapper.xml:

<resultMap id="ApplicationResultMap" type="Application" autoMapping="true">
   <id property="dcn" column="dcn"  />
   <association property="party" javaType="Party" resultMap="PartyResultMap" columnPrefix="applicant"/>
</resultMap>

在映射器界面中:

@Select("SELECT dcn,applicantLastName,applicantRFC,createdDateTime,flag FROM DnA_Application WHERE dcn=#{dcn}")
@ResultMap("ApplicationResultMap")
List<Application> getByProc(int proc);