MyBatis的关联映射

本文介绍了MyBatis中的三种关联映射关系:一对一、一对多和多对多。详细解析了association和collection元素的使用,强调了嵌套查询与嵌套结果的区别,并提供了配置示例。
摘要由CSDN通过智能技术生成

映射的关系分类

一对一,一对多、多对多

一对一

本类中定义对方的类型的对象,表1.2
通过resultMap元素里的 association来处理
association>:配置及一下属性
                                                    表1.1

属性名 作用
property 映射到实体对象属性,与表字段一一对应 -->private IdCard card// property=“card”
column 指定表对应字段 -->column=“card_id” 数据库的真实字段
javaType 映射到实体对象属性 -->javaType=“IdCard” 映射
select 引入嵌套的子SQL语句、关联嵌套的映射查询 -->select=“com.itheima.mapper.IdCardMapper.findCodeById” 引入另外一条
fetchType 关联是否启用延迟加载 有lazy 和eage 默认延迟加载
  1. 为了实现一对一主要通过两种方式 :嵌套查询 和嵌套结果
    嵌套查询–>通过执行另外一条SQl映射语句来返回预期辅助类型 会降低数据区性能
    嵌套结果–>使用嵌套结果映射处理重复的联合结果子集 -->减少复杂度,执行一条SQL语句 推荐使用
  2. 代码块 :
//代码本地chapter09嵌套查询
<select id="findPersonById" parameterType="Integer" 
                                      resultMap="IdCardWithPersonResult">
		SELECT * from tb_person where id=#{
   id}
	</select>

	<resultMap type="Person" id="IdCardWithPersonResult">
		<id property="id" column="id" />
		<result property="name" column="name" />
		<result property="age" column="age" />
		<result property="sex" column="sex" />
		<!-- 一对一:association使用select属性引入另外一条SQL语句 -->
		<association property="card" column="card_id" javaType="IdCard"
			select="com.itheima.mapper.IdCardMapper.findCodeById" />
	</<
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值