Mybatis_3 1對多對多 多層查詢 association 與 collection 案例演示

//pojo
public class AProjectVo extends AProject {
    private AProjectDetail aProjectDetail; //project : projectdetail = 1:1
    private List<AEngVo> eListVo;//project : eng = 1:n
    
public class AEngVo extends AEng{
    private List<AGroup> gList;//eng : group = 1:n
    
//dao 主要 返回對象就要保證查詢的結果唯一 我們這裏通過 最小的分子gid查詢
AProjectVo selectAProjectVo(@Param("gId")String gId);
//xml
<resultMap id="AProjectVoResultMap" type="com.powerpeak.jsy.business.project.vo.AProjectVo">
    <id column="p_id" property="pId" jdbcType="VARCHAR" />
    <result column="p_name" property="pName" jdbcType="VARCHAR" />
    <result column="p_content" property="pContent" jdbcType="VARCHAR" />
    <result column="p_num" property="pNum" jdbcType="INTEGER" />
   <association property="aProjectDetail" javaType="com.powerpeak.jsy.business.project.domain.AProjectDetail">
    <id column="pd_id" property="pdId" jdbcType="VARCHAR" />
    <result column="p_id" property="pId" jdbcType="VARCHAR" />
    <result column="p_aa" property="pAa" jdbcType="VARCHAR" />
    <result column="p_bb" property="pBb" jdbcType="VARCHAR" />
   </association>
  <collection property="eListVo" ofType="com.powerpeak.jsy.business.project.vo.AEngVo">
    <id column="e_id" property="eId" jdbcType="VARCHAR" />
    <result column="p_id" property="pId" jdbcType="VARCHAR" />
    <result column="e_name" property="eName" jdbcType="VARCHAR" />
    <result column="e_content" property="eContent" jdbcType="VARCHAR" />
    <result column="e_num" property="eNum" jdbcType="INTEGER" />
    <collection property="gList" ofType="com.powerpeak.jsy.business.project.domain.AGroup">
           <id column="g_id" jdbcType="VARCHAR" property="gId" />
        <result column="e_id" jdbcType="VARCHAR" property="eId" />
        <result column="g_name" jdbcType="VARCHAR" property="gName" />
        <result column="g_content" jdbcType="VARCHAR" property="gContent" />
        <result column="g_num" jdbcType="INTEGER" property="gNum" />
    </collection>
  </collection>
</resultMap>
<select id="selectAProjectVo" parameterType="string" resultMap="AProjectVoResultMap">
    select * FROM a_project p
        LEFT JOIN a_project_detail pd ON p.p_id = pd.p_id
        LEFT JOIN a_eng e ON p.p_id = e.p_id
        LEFT JOIN a_group g ON e.e_id = g.e_id
        WHERE g.g_id = #{gId}
</select>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章