版权声明:大家好,我是笨笨,笨笨的笨,笨笨的笨,转载请注明出处,谢谢! https://blog.csdn.net/jx520/article/details/87973684
Mybatis 关联查寻 association
association
用于将关联查寻的结果映射为 A 嵌套 B 的关系。
通常两种用法:
- 一次查寻的结果直接映射进属性。
- 通过查寻到的
某字段结果
再进行子查寻
一次查寻的结果直接映射进属性
<association property="属性名" javaType="属性的引用类型,可以小写b是因为mybatis创建了实体别名" />
对象 A、B、C 为嵌套关系。
A{
B{
C{}
}
}
普通的嵌套关系,一次查的结果。查A带B
public class A {
private Long id;
private String name;
//--------- for view -----------
private B b;
}
select a.*, b.*
from a left b on a.id = b.pid
<resultMap id="A_ResultMap" type="com.jerry.entity.a">
<id column="id" jdbcType="BIGINT" property="id" />
<association property="b" javaType="b" />
</resultMap>
查A带B,B中还嵌套了C
association
还可以继续返回resultMap
实现嵌套
<resultMap id="A_ResultMap" type="com.jerry.entity.a">
<id column="id" jdbcType="BIGINT" property="id" />
<association property="b" javaType="b" resultMap="C_ResultMap" />
</resultMap>
<resultMap id="C_ResultMap" type="com.jerry.entity.c">
<id column="id" jdbcType="BIGINT" property="id" />
</resultMap>
补充一句:有时我们会添加基础类型的属性(Integer、Long、String…)用于显示。这个不需要用 association
,别蒙圈。比如下面,我们查A
带出B
的remark
直接用result
就行了
public class A {
private Long id;
private String name;
//--------- for view -----------
private String remark;
}
select a.id, a.name, b.remark as remark
from a left b on a.id = b.pid
<resultMap id="AResultMap" type="com.jerry.entity.a">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="name" jdbcType="VARCHAR" property="name" />
<result column="remark" jdbcType="VARCHAR" property="remark" />
</resultMap>
通过查寻到的某字段结果
再进行子查寻
<!-- association 子查寻 所属公司 -->
<select id="selectCompany" resultType="com.av.company" >
select 你要的字段最好别用* from company where company_id = #{companyId }
</select>
<!-- RichResultMap -->
<resultMap id="RichResultMap" type="com.av.girl">
<id column="girl_id" jdbcType="BIGINT" property="girlId" />
<!-- 老师们的艺名 -->
<result property="stageName" column="stage_mame" jdbcType="VARCHAR"/>
<!-- 老师们所属的公司(就当每个老师只能属于一家公司吧,我不知道事实是怎样的) 如果需要可以用 resultMap -->
<association property="company" column="company_id" javaType="company" select="selectCompany"/>
</resultMap>
详情看这篇: https://blog.csdn.net/jx520/article/details/83445011
官网文档
http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html#Result_Maps