mybatis一對多連線查詢

2020-08-14 21:08:15

實體

  • country

package com.chuangmei.Mybatis.Stu;

import java.util.Set;

public class Country {

	private Integer cid;
	private String cname;
	//關聯屬性
	private Set<Minister> ministers;
	/**
	 * @return the cid
	 */
	public Integer getCid() {
		return cid;
	}
	/**
	 * @param cid the cid to set
	 */
	public void setCid(Integer cid) {
		this.cid = cid;
	}
	/**
	 * @return the cname
	 */
	public String getCname() {
		return cname;
	}
	/**
	 * @param cname the cname to set
	 */
	public void setCname(String cname) {
		this.cname = cname;
	}
	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return "Country [cid=" + cid + ", cname=" + cname + ", ministers=" + ministers + "]";
	}
	/**
	 * @return the ministers
	 */
	public Set<Minister> getMinisters() {
		return ministers;
	}
	/**
	 * @param ministers the ministers to set
	 */
	public void setMinisters(Set<Minister> ministers) {
		this.ministers = ministers;
	}

}

  • minister

package com.chuangmei.Mybatis.Stu;

public class Minister {

	private Integer mid;
	private String mname;
	
	
	/**
	 * @return the mid
	 */
	public Integer getMid() {
		return mid;
	}
	/**
	 * @param mid the mid to set
	 */
	public void setMid(Integer mid) {
		this.mid = mid;
	}
	/**
	 * @return the mname
	 */
	public String getMname() {
		return mname;
	}
	/**
	 * @param mname the mname to set
	 */
	public void setMname(String mname) {
		this.mname = mname;
	}
	
	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return "Minister [mid=" + mid + ", mname=" + mname + "]";
	}
}

查詢

<!-- 一對多連線查詢 -->
   		<resultMap type="Country" id="CountryMapper">
   			<id column="cid" property="cid"/>
   			<result column="cname" property="cname"/>
   			
   			<collection property="ministers" ofType="MInister">
   				<id column="mid" property="mid"/>
   				<result column="mname" property="mname"/>
   			</collection>
   		</resultMap>
   		
   		<select id="selectCountryByID" resultMap="CountryMapper">
   			select cid,cname,mid,mname from 
   			country c join minister m
   			where
   			c.cid = m.countryid and c.cid = #{xxx}
   		</select>


<!-- 一對多單表查詢 -->
   		<resultMap type="Country" id="CountryMapperOnly">
   			<id column="cid" property="cid"/>
   			<result column="cname" property="cname"/>
   			<collection property="ministers" ofType="Minister"
   				select="selectMinisterByCid02"
   				column="cid"/>
   		</resultMap>
   		
   		<select id="selectMinisterByCid02" resultType="Minister">
   			select mid,mname from minister where countryid = #{cid}
   		</select>
   		<select id="selectCountryByID01" resultMap="CountryMapperOnly"> 
   			select cid,cname from country where cid = #{parameter}
   		</select>