在使用mybatis时,经常会用到关联查询,下面来总结一下关联查询(一对一)的使用(1)
一、首先说一下一对一的关联查询,一对一关联查询建议使用标签来完成
1.第一种使用标签的方法,直截了当,看代码:
1.1 新建实体类
public class CustDetailFME {
private String cust_id;
private String cust_name;
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="indivMobile" column="indiv_mobile"/>
<result property="regMobile" column="reg_mobile"/>
<result property="localResid" column="local_resid"/>
<result property="regProvince" column="reg_province "/>
<result property="regCity" column="reg_city "/>
</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 cust_id,cust_name from cmis_uat1.CUST_DETAIL
where cust_id=#{custId}
</select>
1.4 子表对应的sql映射接口
CustFamily custFamilySelectByCustId(@Param("custId") String custId);
1.5 字表的sql文件
<select id="custFamilySelectByCustId" resultType="CustOccupa">
select * from cmis_uat1.CUST_FAMILY
where cust_id = #{id} and last_chg_dt in (select max(last_chg_dt) from cmis_uat1.CUST_FAMILY where cust_id = #{id})
</select>
(具体使用方法说明:
返回实体类中对象是一对一的;使用association标签时,column为主表查询的结果数据,后面跟的select为查询子表数据的接口方法,子表查询sql中id为所传的参数值
注:在主表sql中查询的结果字段需要和返回的实体类中字段一一对应的,不可多也不可少
)

本文总结了在MyBatis中进行一对一关联查询的方法,推荐使用`association`标签实现。详细介绍了创建实体类、主表和子表的SQL映射接口及文件,以及如何在查询中设置column和select属性,确保主表和子表数据的正确关联。注意主表查询结果字段与实体类字段对应,避免多余或缺失字段。
3521

被折叠的 条评论
为什么被折叠?



