mybatis中<association> 和 <collection>

在 MyBatis 中,<association><collection> 是用于配置结果映射中关联关系的两个元素。

<association> 用于配置一对一的关联关系,表示两个对象之间的关系是一对一的。例如,一个订单对象关联一个用户对象,使用 <association> 进行配置。

<collection> 用于配置一对多的关联关系,表示一个对象关联多个对象。例如,一个部门对象关联多个员工对象,使用 <collection> 进行配置。

主要区别:

  1. 关联关系类型:<association> 表示一对一的关联关系,而 <collection> 表示一对多的关联关系。

  2. 配置位置:<association><collection> 元素通常在 <resultMap> 中使用,用于定义结果映射规则。<association> 用于配置单个属性的关联关系,而 <collection> 用于配置集合属性的关联关系。

  3. 属性映射:<association> 使用 <id><result> 进行属性映射的配置,用于将关联对象的属性与查询结果进行映射。<collection> 除了使用 <id><result> 进行属性映射外,还使用 <association> 进行嵌套的关联关系配置,用于定义集合元素对象内部的关联关系。

  4. 查询语句:<association> 通常对应一个单独的查询语句,用于获取关联对象的数据。<collection> 通常也对应一个查询语句,用于获取关联对象的集合数据。

示例:
下面是一个示例的 Java 实体类,用于表示订单(Order)、用户(User)和订单项(OrderItem)的关系:


public class Order {private int orderId;private String orderNumber;private User user;private List<OrderItem> orderItems;}public class User {private int userId;private String username;}public class OrderItem {private int orderItemId;private String itemName;private int quantity;}

在上述示例中,Order 类表示订单,包含了订单的基本信息(orderIdorderNumber),以及关联的用户对象(user)和订单项对象集合(orderItems)。

User 类表示用户,包含了用户的基本信息(userIdusername)。

OrderItem 类表示订单项,包含了订单项的基本信息(orderItemIditemNamequantity)。

xml配置:
当使用 MyBatis 的 XML 配置文件进行结果映射时,以下是 <association><collection> 元素的示例配置:

<resultMap id="orderResultMap" type="Order"><id property="orderId" column="order_id" /><result property="orderNumber" column="order_number" /><association property="user" javaType="User"><id property="userId" column="user_id" /><result property="username" column="username" /></association><collection property="orderItems" ofType="OrderItem"><id property="orderItemId" column="item_id" /><result property="itemName" column="item_name" /><result property="quantity" column="quantity" /></collection>
</resultMap><select id="getOrderById" resultMap="orderResultMap">SELECT * FROM orders WHERE order_id = #{orderId}</select>

使用 <association> 配置了 user 属性的关联关系。property 属性指定了关联属性的名称为 userjavaType 属性指定了关联属性的类型为 User。在 <association> 元素内部,使用 <id><result> 元素进行属性映射的配置。
使用 <collection> 配置了 orderItems 属性的关联关系。property 属性指定了关联属性的名称为 orderItemsofType 属性指定了集合元素的类型为 OrderItem。在 <collection> 元素内部,同样使用 <id><result> 元素进行属性映射的配置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/188959.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大屏适配方案(vw、vh)

开发大屏主要是两方面的工作&#xff1a; 大屏之关键-前期的自适应适配根据 ui 稿绘制图表&#xff0c;调细节 方案实现方式优点缺点vw vh1.按照设计稿的尺寸&#xff0c;将px按比例计算转为vw和vh1.可以动态计算图表的宽高&#xff0c;字体等&#xff0c;灵活性较高 2.当屏幕…

PyQt基础_012_对话框类控件QInputDialog

基本操作 import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import *class InputdialogDemo(QWidget):def __init__(self, parentNone):super(InputdialogDemo, self).__init__(parent)layout QFormLayout()self.btn1 QPushButton(&qu…

路由器Beacon帧和低功耗设备DTIM之间的关系

1. 路由器发送Beacon帧&#xff1a;路由器周期性地发送Beacon帧&#xff0c;用于广播网络的存在和参数信息。Beacon帧中包含了DTIM周期和DTIM计数器的值。 2. 设备监听Beacon帧&#xff1a;低功耗设备在休眠状态下会定期唤醒来监听路由器发送的Beacon帧。 3. DTIM计数器更新&…

springboot+java校园自助洗衣机预约系统的分析与设计ssm+jsp

洗衣服是每个人都必须做的事情&#xff0c;而洗衣机更成为了人们常见的电器&#xff0c;但是单个洗衣机价格不菲&#xff0c;如果每人都买&#xff0c;就会造成资源的冗余。所有就出现了公用设备&#xff0c;随着时代的发展&#xff0c;很多公用都开始向着无人看守的自助模式经…

如何访问电脑的组策略编辑器?

如何打开组策略 如果我们使用的是 Win 10 系统&#xff0c;如何打开组策略&#xff1f;下面为大家总结了四种打开组策略编辑器的方法。 从搜索框打开 Win 10 策略组怎么打开&#xff1f;一个简单快速的方法就是使用 Windows 自带的搜索栏。我们可以向搜索框中输入“编辑组策…

halcon中灰度图自动二值化

1、首先图片要先形成灰度图&#xff0c;如果下一句是二值化的那就删掉 dev_clear_window() read_image(Image, D:/desktop/tmpp/微信图片_20231201184731.png) * 转为灰度图 rgb1_to_gray(Image, GrayImage) 2、双击图像变量中的GrayImage 3、工具栏点击打开灰度直方图按钮&…

【数电笔记】基本和复合逻辑运算

说明&#xff1a; 笔记配套视频来源&#xff1a;B站 基本逻辑运算 1. 与运算 &#xff08;and gate&#xff09; 2. 或运算 &#xff08;or gate&#xff09; 3. 非运算 &#xff08;not gate &#xff09; 复合逻辑运算 1. 与非运算&#xff08;nand&#xff09; 2. 或非运…

开源镜像站

百度&#xff08;需要权限&#xff09;&#xff1a;https://mirror.baidu.com/阿里&#xff1a;https://developer.aliyun.com/mirror/腾讯&#xff1a;https://mirrors.cloud.tencent.com/华为&#xff1a;https://mirrors.huaweicloud.com/home清华&#xff1a;https://mirro…

【动手学深度学习】(七)丢弃法

文章目录 一、理论知识二、代码实现2.1从零开始实现Dropout 【相关总结】np.random.uniform(low&#xff0c;high&#xff0c;size)astypetorch.rand() 一、理论知识 1.动机 一个好的模型需要对输入数据的扰动鲁棒 使用有噪音的数据等价于Tikhonov正则丢弃法&#xff1a;在层…

vivado实现分析与收敛技巧3-面向非工程用户的智能设计运行建议

要使用智能设计运行功能特性 &#xff0c; 需要 Vivado 工程。这是因为需要进行运行管理。以下指示信息解释了创建综合后工程的最简单方法。这些信息适用于以下流程的用户&#xff1a; • 非工程实现运行 • 使用较低版本的 Vivado 或第三方综合工具进行综合 访问智能设计…

【Paper List】Multi-modal Few-shot Sentiment Analysis

综述 Multimodal Sentiment Analysis: A Survey of Methods, Trends, and Challenges paper link: https://dl.acm.org/doi/abs/10.1145/3586075 2023 Few-shot Multimodal Sentiment Analysis Based on Multimodal Probabilistic Fusion Prompts paper link: https://dl.ac…

分析Pun老师的论文

Combating copycatting from emerging market suppliers in global supply chains 疯狂看潘老师的论文&#xff0c;感觉找论文的方向好难啊&#xff0c;好做的别人都做了&#xff0c;不好做的&#xff0c;你又没想法能做。 这篇文章就是讲保护全球制造商免受新兴市场普遍存在的…

MvLNet

表1 Noisy MNIST–ACC&#xff1a;0.678&#xff0c;F-mea&#xff1a;0.6691&#xff0c;NMI&#xff1a;0.6632&#xff0c;AMI&#xff1a;0.6626 Caltech101-20–ACC&#xff1a;0.3521&#xff0c;F-mea&#xff1a;0.2535&#xff0c;NMI&#xff1a;0.4968&#xff0c;A…

国家开放大学 平时作业 测试题 训练

试卷代号&#xff1a;1340 古代小说戏曲专题 参考试题&#xff08;开卷&#xff09; 一、选择&#xff08;每题1分&#xff0c;共10分&#xff09; 1.下列作品中属于唐传奇的是( )。 A.《公孙九娘》 B.《观音作别》 C《碾玉观音》 …

Javase | 多线程

目录: 1.程序2.进程3.线程4.多线程5.自定义线程类 :5.1 继承Thread类5.2 实现Runnable接口 6.多线程的生命周期及状态转换新建状态 (New)就绪状态 (Runnable)运行状态 (Running)阻塞状态 (Blocked)死亡状态 (Terminated) 7.多线程的调度线程的优先级线程的休眠线程的让步yield(…

你好!插值查找【JAVA】

1.初次相识 插值查找&#xff08;interpolation search&#xff09;是一种根据待查找关键字在有序数组中的大致位置决定查找范围的查找算法。插值查找与二分查找类似&#xff0c;区别在于插值查找对于待查找关键字在数组中的位置进行估计&#xff0c;从而更精准地定位到待查找关…

SpringBoot+mysql+vue实现大学生健康档案管理系统前后端分离

一、项目简介 本项目是一套基于SpringBoot实现大学生健康档案管理系统&#xff0c;主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目可以直接作为bishe使用。 项目都经过严格调试&#…

Android Studio新版UI介绍

顶部菜单栏 左侧主要菜单入口项目名称分支名称 展开之后&#xff0c;主要功能与原来菜单栏功能一样&#xff0c;最大的变化就是把setting独立出去了。 而项目名称这里&#xff0c;展开就可以看到打开的历史工程列表&#xff0c;可以直接新建工程&#xff0c;原来需要在项目名称…

git的相关实用命令

参看文章&#xff1a;https://blog.csdn.net/qq_21688871/article/details/130158888 http://www.mobiletrain.org/about/BBS/159885.html 1、git commit后&#xff0c;但发现文件有误&#xff0c;不想push(提交到本地库&#xff0c;回退到暂存区&#xff09; git reset --sof…

k8S 发布spring boot的jar包

在Kubernetes&#xff08;K8s&#xff09;上部署Spring Boot应用&#xff08;打包成jar文件&#xff09;的基本步骤如下&#xff1a; 1. 准备Spring Boot应用的Jar包 确保你的Spring Boot应用已经成功构建&#xff0c;生成了可执行的jar包。 2. 创建Docker镜像 为你的Sprin…