Java课题笔记~ 关联映射

一、MyBatis关联查询

在关系型数据库中,表与表之间存在着3种关联映射关系,分别为一对一、一对多、多对多。

一对一:一个数据表中的一条记录最多可以与另一个数据表中的一条记录相关。列如学生与学号就属于一对一关系。

一对多:主键数据表中的一条记录可以与另外一个数据表任意数量的记录相关,另外一个数据表中的一条记录只能与主键数据表中的某一条记录相关。列如班级与学生就属于一对多关系。

多对多:一个数据表中的一条记录可以与另外一个数据表任意数量的记录相关,另外一个数据表中的一条记录也可以与本数据表中任意数量的记录相关。列如学生和老师就属于多对多关系。

1、MyBatis一对一关联查询

在MyBatis中,通过<association>元素来处理一对一关联关系。

<association>元素提供了一系列属性用于维护数据表之间的关系。

<association>元素中的属性如下表所示:

**注意:**接口文件的路径和配制映射文件的路径不一样,详情见下图:

< association>元素的示例配置如下:

java 复制代码
 < !- - 方式一:嵌套查询-->
< association property="card" column="card_id" javaType="com.Jorya.model.StudentIdCard"
	select="com.Jorya.mapper.StudentIdCardMapper.findCodeById"/>

<!-- 方式二: 嵌套结果-->
<association property="card" javaType="com.Jorya.Model.StudentIdCard">
	<id property="id" column="card_id"/>
	<result property="code" column="code"/>
</association>

2、MyBatis一对多关联查询

MyBatis中有一个< resultMap>元素,其中包含了一个< collection>子元素,MyBatis通过这个子元素来处理一对多联系。

< collection>子元素的属性大部分与< association>元素相同,其中包含了一个特殊元素------ofType,ofType与javaType对应,用于指定实体对象中集合类属性所包含的元素类型。

< collection>元素的示例配置如下:

java 复制代码
<!--嵌套查询>
<collection property="ordersList" column="id"
	ofType="con.itheima.po.Orders"
	select="com.itheima.mapper.OrderMapper.selectOrders"/>
<!--嵌套结果-->
<collection property="orderList" ofType="com.itheima.po.Orders'>
	<id property="id" column="orders_id"/>
	<result property="number' column="number"/>
</collection>

3、MyBatis多对多关联查询

通过resultMap的collection元素实现;

<collection />是mybatis处理多对多关系的,是指拿到一个集合,property="listRight"的内容是对应你model层表中表示多对多关系的属性名

fetchType表示是懒加载还是立刻加载;

select表示是选择关联关系的哪个方法获取数据 ;

column表示传到映射关系的列的值

相关推荐
学长毕业设计5 小时前
基于springboot的云南中草药知识普及管理网站的设计与开发(源码+文档+讲解视频)
java·spring boot·后端
大模型码小白5 小时前
AI 提示词专栏:使用系统指令(System Prompt)实现全局约束
java·大数据·运维·开发语言·人工智能·python·prompt
cxoptics6 小时前
蓝宝石的轴向在窗片和偏振片中起的作用
java
蒸蒸yyyyzwd6 小时前
cpp选手秋招学习笔记 day18
笔记·学习
wuminyu6 小时前
Java FFM处理网络读写事件源码剖析
java·linux·c语言·jvm·c++
Hotchip_MEMS6 小时前
从“手工作坊”到“全自动贴装”:MEMS如何重塑雾化器制造流程
人工智能·笔记·物联网·电脑·制造
小江的记录本6 小时前
【AI Agent】《2026年9月 AI Agent全栈开发技术选型专项面试宝典》
java·spring boot·python·spring·ai·面试·ai编程
维克兜率天6 小时前
【维克】技术指标是什么:从均线到MACD的数学原理
人工智能·笔记·python·算法·量化
梦梦代码精6 小时前
《LikeShop全产品技术硬核拆解:ThinkPHP8+Vue3+UniApp架构,私有化部署与二次开发实战指南》
java·低代码·系统架构·php·开源软件
一木 之林7 小时前
C/C++ 面向对象编程(OOP)(进阶)
java·c语言·c++