mybatis的association以及collection的用法

2020-11-13 13:00:49

實體類:

public class ResumeDetailVO {

	@ApiModelProperty("使用者資訊")
    private UserInfo userInfo;     //一對一,使用association

    @ApiModelProperty("工作經驗")
    List<Experience> experiences;    //一對多,使用collection

}

對應的resultMap :

  <resultMap id="ResumeDetailMap" type="ResumeDetailVO">
    <association property="userInfo" javaType="UserInfoVO">
      <result column="name" property="name"></result>
      <result column="phone" property="phone"></result>
      <result column="email" property="email"></result>
      <result column="identity_card" property="identityCard"></result>
      <result column="sex" property="sex"></result>
      <result column="birth_date" property="birthDate"></result>
      <result column="educational" property="educational"></result>
      <result column="region" property="region"></result>
      <result column="address" property="address"></result>
      <result column="salary" property="salary"></result>
      <result column="avatar_url" property="avatarUrl"></result>
    </association>

    <collection property="experiences" ofType="Experience">
      <result column="start_ts" property="startTs"></result>
      <result column="end_ts" property="endTs"></result>
      <result column="company" property="company"></result>
      <result column="work_tag" property="workTag"></result>
      <result column="work_type" property="workType"></result>
      <result column="company_dept" property="companyDept"></result>
      <result column="description" property="description"></result>
    </collection>
  </resultMap>

總結:

1、association表示的是has one的關係,一對一時使用。使用javaType
2、collection表示的是has many的關係,一對多時使用。使用ofType

注意:

所有select 標籤中的resultType以及resultMap中的type、association中的javaType、collection中的ofType,如果型別是實體類的話需要寫類的全類名。
這裡只寫了類名,是因為在組態檔(mybatis-config.xml或properties.yml)中設定了typeAliases,否則就要寫該類的全類名。