簡體   English   中英

使用mybatis的resultmap將對象收集到一個linkhashmap中

[英]Using resultmap of mybatis to collect objects into a linkedhashmap

我有兩個表:employee_details(department_id,employee_id) & Skill_details(employee_id,skill_id)。 我想為每個部門 ID 構造 Employee_Details 對象的 LinkedHashMap,這樣

class Employee_Details {
    long employee_id;
    ArrayList<long> skill_ids;
    // other data & code may be
    ----;
    ----; 
}

如何在 mybatis 中使用 resultmaps 來實現這一點

您可以像這樣使用<collection><resultMap id="" type="java.util.LinkedHashMap">

EmployeeDetails.java

public class EmployeeDetails {
    Long employeeId;
    List<SkillDetails> skillDetails;  // mapping snippet is <collection property="skillDetails" ofType="package.SkillDetails" select="selectSkillDetails" column="employee_id">
    // get set
}

FooMapper.xml

  <resultMap id="EmployeeDetailsResultMap" type="java.util.LinkedHashMap" >
    <result column="employee_id" property="employeeId"/>
    <!-- employee_id as foreign key -->
    <collection property="skillDetails" ofType="package.SkillDetails" select="selectSkillDetails" column="employee_id">
        <result property="employeeId" column="employee_id"/>
        <result property="skillId" column="skill_id"/>
    </collection>
  </resultMap>

  <resultMap id="SkillDetailsResultMap" type="java.util.LinkedHashMap" >
    <result column="col1" property="p1" />
    <result column="etc." property="etc." />
  </resultMap>

  <select id="selectSkillDetails" resultMap="SkillDetailsResultMap" >
    SELECT *
      FROM skill_details t1
      where t1.employee_id=#{employee_id}
  </select>

  <select id="selectEmployeeDetails" resultMap="EmployeeDetailsResultMap">
    SELECT *
      FROM employee_details t1
      where t1.department_id=#{department_id}
  </select>

***同理,添加:**

public class Department {
    Long departmentId;
    List<EmployeeDetails> employeeDetails;
    // get set
}

  <resultMap id="DepartmentsResultMap" type="java.util.LinkedHashMap" >
    <result column="department_id" property="departmentId" />
    <collection property="..." ofType="..." select="selectEmployeeDetails" column="employee_id">
      <result property="employeeId" column="employee_id"/>
      <result property="..." column="..."/>
    </collection>
  </resultMap>

  <select id="selectDepartments" resultMap="..." >
    SELECT *
      FROM ...
  </select>

它們都是LinkedHashMap,-_-!
希望這些幫助...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM