//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>
Mybatis_3 1對多對多 多層查詢 association 與 collection 案例演示
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.