在使用mybatis时,经常会用到关联查询,下面来总结一下关联查询(一对一)的使用(2)
一、首先说一下一对一的关联查询,一对一关联查询建议使用标签来完成
1.第二种使用标签的方法,直截了当,看代码:
1.1 新建实体类
public class CustDetailFME {
private String custId;
private String custName;
private CustFamily custFamily;
public String getCustId() {
return custId;
}
public void setCustId(String custId) {
this.custId = custId;
}
public String getCustName() {
return custName;
}
public void setCustName(String custName) {
this.custName = custName;
}
public CustFamily getCustFamily() {
return custFamily;
}
public void setCustFamily(CustFamily custFamily) {
this.custFamily = custFamily;
}
}
1.2 主表对应的sql映射接口
CustDetailFME custDetailFMESelectByCustId(@Param("custId") String custId);
1.3 主表的sql文件
<resultMap type="com.hbcfc.yusys.cmis.customer.mapper.domain.User" id="custDetailMap">
<id property="custId" column="cust_id" />
<result property="custName" column="cust_name"/>
</resultMap>
<resultMap type="com.hbcfc.yusys.cmis.customer.mapper.domain.CustDetailFME" id="CustDetailFMEMap" extends="custDetailMap">
<association property="custFamily" column="{id=cust_id}" select="com.hbcfc.yusys.cmis.customer.mapper.CustFamilyMapper.custFamilySelectByCustId"/>
</resultMap>
<select id="custDetailFMESelectByCustId" resultMap="CustDetailFMEMap">
select a.cust_id,a.cust_name,b.* from cmis_uat1.CUST_DETAIL a , cmis_uat1.CUST_FAMILY b
where a.cust_id = b.cust_id and cust_id=#{custId}
</select>
(具体使用方法说明:
返回实体类中对象是一对一的;与第一种方法的区别在于子表中独有的字段也可以作为查询条件
)