简体   繁体   中英

How to map Addresses class with list of Address in EmployeeMap using Mybatis?

**How to map Addresses class with list of Address in EmployeeMap using Mybatis? is my code below correct? **

Below is query is to get employeeId and hos multiple address locations. How to map those fields in MyBatis? Appreciate your help to map the fields. FYI, I could not post complete Address class with other fields

<resultMap id="EmployeeMap" type="Employee">
    <result column="emplId" property="emplId"/>
    <collection property="addressList" >
        <result column="addressLineOne" property="addressLineOne"/>
        <result column="addressLineTwo" property="addressLineTwo"/>
        <result column="city" property="city"/>
        <result column="country" property="country"/>
        <result column="zipCode" property="zipCode"/>
    </collection>
 </resultMap>
 <select id="employeeData" resultMap="EmployeeMap">Select * from employee</select>

Here is My Java code

public class Employee{

    String emplId;
    Addresses addressList;

    public String getEmplId() {
        return emplId;
    }

   public void setEmplId(Addresses value) {
        this.emplId = value;
   }


   public Addresses getAddressList() {
       return addressList;
   }

   public void setAddressList(Addresses value) {
       this.addressList = value;
   }
}
public class Addresses{

   List<Address> addresses;

   public List<Address> getAddresses() {
     if (addresses == null) {
        addresses = new ArrayList<Address>();
      }
     return this.addresses;
   }
 }
 public class Address{
   String city;

  public String getCity(){
       return city;
   }

   public void setCity(String value) {
       this.city = value;
   }
}

The target property of <collection /> is addressList.addresses , so the result map should look as follows:

<resultMap id="EmployeeMap" type="Employee">
  <id column="emplId" property="emplId"/>
  <collection property="addressList.addresses"
      javaType="list" ofType="Address">
    <result column="addressLineOne" property="addressLineOne"/>
    <result column="addressLineTwo" property="addressLineTwo"/>
    <result column="city" property="city"/>
    <result column="country" property="country"/>
    <result column="zipCode" property="zipCode"/>
  </collection>
</resultMap>

Note: You should specify <id /> in the parent result map.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM