Mybatis 关联查寻 association

版权声明:大家好,我是笨笨,笨笨的笨,笨笨的笨,转载请注明出处,谢谢! https://blog.csdn.net/jx520/article/details/87973684


association 用于将关联查寻的结果映射为 A 嵌套 B 的关系。
通常两种用法:

  1. 一次查寻的结果直接映射进属性。
  2. 通过查寻到的某字段结果再进行子查寻

一次查寻的结果直接映射进属性

<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带出Bremark直接用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

猜你喜欢

转载自blog.csdn.net/jx520/article/details/87973684