第7天:MyBatis(3)

本文详细介绍了Mybatis中如何进行多表查询,包括原生级联查询和使用VO对象的方法。VO对象用于存储跨表查询结果,可以采用复制属性或继承实体类的方式定义。此外,还讲解了级联对象的概念,通过<resultMap>标签的使用,将级联查询的结果映射到级联对象的属性中,实现分步骤查询。文章最后展示了如何在Mybatis中利用级联对象进行分步查询的具体配置和方法调用。
摘要由CSDN通过智能技术生成

#1.Mybatis多表查询

①原生级联查询+VO对象:

VO:View Object:视图对象

定义:也是实体类的一种,专门用于级联查询的跨表字段保存操作,不与任何一张单表对应,但是可以用来存储多表字段数据

VO中携带着跨表查询之后所有表中字段对应的对象属性。

VO的定义方式:

1.将多个数据表中所有字段对应的实体类对象属性复制到同一个VO类型中;

2.使用继承的方式,继承自多个数据库表对应的多种实体类中的一种,将其他实体类下的对象属性复制到VO当中。

②原生级联查询+级联对象:

级联对象:将外键属性扩展为级联属性的实体类对象,称之为级联对象

级联属性:用来存储级联查询之后,另外一张数据表信息的属性,相当于外键属性的一种扩展

1.<resultMap>标签用法1:映射自定义SQL字段和实体类对象属性的对应关系:

<!--
type:和select标签下的resultType属性作用相似
都用来声明映射结束后,用来存储数据信息的实体类类型
-->
<resultMap id="map1" type="emp2">
    <!--
    给主键属性使用,用来映射SQL语句中的主键字段和实体类中的主键属性的对应关系
    property:用来标记实体类中属性的名称
    column:用来标记SQL语句中字段的名称
    -->
    <id property="" column="" />
</resultMap>

2.<resultMap>标签用法2:将级联查询结果映射到级联对象的级联属性中:

<resultMap id="map1" type="emp2">
    <!--
    association:该标签用于查询一的一端的数据
    多的一端的数据使用的标签是:collection
    javaType:对应级联对象中级联属性的数据类型
    property:对应级联对象中级联属性的属性名
    -->
    <association javaType="dept" property="ddd">
            <id column=" " property=" "/>
            <result column=" " property=" "/>
    </association>
</resultMap>

③分步骤查询+级联对象

<resultMap id="empDeptMap2" type="emp2">
 <!--
 property:依然用来指定当前级联对象中,哪一个属性是级联属性
 select:namespace.方法名,用来指定分步骤查询的下一步调用的是哪一个查询方法
 column:在第一步查询的结果中,我们使用哪一个字段(外键字段)作为第二步骤查询
 -->
 <association
 property="dept"
 select="com.huade.mapper.DeptMapper.queryDeptById"
 column="dept_id">
 </association>
 </resultMap>
 <select id="queryEmpByIdWithDept3" resultMap="empDeptMap2">
 select * from Emp where emp_id = #{empId}
 </select>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fwy洛伦兹力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值