Mybatis中的<collection>

Mybatis中的标签用于映射一对多或多对多的关系,它可以将查询结果中的多个子对象映射到一个集合属性中。

标签的属性说明如下:

  • property:集合属性的名称。
  • column:关联查询中子对象的外键列名。
  • javaType:集合属性的类型,可以是List、Set、Map等。
  • ofType:集合元素的类型,可以是任意Java类型。
  • select:关联查询子对象的SQL语句。

下面是一个使用标签的示例:

<resultMap id="userMap" type="User">
  <id property="id" column="id"/>
  <result property="name" column="name"/>
  <collection property="orders" ofType="Order" select="selectOrdersByUserId">
    <id property="id" column="id"/>
    <result property="name" column="name"/>
  </collection>
</resultMap>

<select id="selectUserById" resultMap="userMap">
  select * from user where id = #{id}
</select>

<select id="selectOrdersByUserId" resultType="Order">
  select * from order where user_id = #{id}
</select>

以上示例中,我们定义了一个User对象和一个Order对象,它们之间是一对多的关系,即一个用户可以拥有多个订单。在User对象的映射中,我们使用了标签来映射用户的订单集合,其中:

  • property属性为orders,表示User对象中的订单集合属性名为orders。
  • ofType属性为Order,表示订单集合中的元素类型为Order。
  • select属性为selectOrdersByUserId,表示查询用户的订单集合的SQL语句为selectOrdersByUserId。

在查询用户信息时,Mybatis会自动执行selectUserById查询语句,并将查询结果映射到User对象中。同时,Mybatis会根据标签中定义的select属性,自动执行selectOrdersByUserId查询语句,将查询结果映射为一个Order对象的集合,并设置到User对象的orders属性中。

示例SQL如下:

CREATE TABLE user (
  id INT PRIMARY KEY,
  name VARCHAR(20)
);

CREATE TABLE order (
  id INT PRIMARY KEY,
  name VARCHAR(20),
  user_id INT,
  FOREIGN KEY (user_id) REFERENCES user(id)
);

INSERT INTO user VALUES (1, '张三');
INSERT INTO user VALUES (2, '李四');

INSERT INTO order VALUES (1, '订单1', 1);
INSERT INTO order VALUES (2, '订单2', 1);
INSERT INTO order VALUES (3, '订单3', 2);

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯(基础题)

试题 C: 好数 时间限制 : 1.0s 内存限制: 256.0MB 本题总分&#xff1a;10 分 【问题描述】 一个整数如果按从低位到高位的顺序&#xff0c;奇数位&#xff08;个位、百位、万位 &#xff09;上 的数字是奇数&#xff0c;偶数位&#xff08;十位、千位、十万位 &…

《系统分析与设计》实验-----在线书店系统 需求规格说明书 哈尔滨理工大学PLUS完善版

文章目录 需求规格说明书1&#xff0e;引言1.1编写目的1.2项目背景1.3定义1.4参考资料 2&#xff0e;任务概述2.1目标2.2运行环境2.3条件与限制 3&#xff0e;数据描述3.1静态数据3.2动态数据3.3数据库介绍3.4数据词典3.5数据采集 4&#xff0e;功能需求4.1功能划分4.2功能描述…

ES-全文搜索

模糊查询&#xff1a; 写数据通过id路由到master分片 查询数据到一个节点&#xff0c;该节点会作为一个调度节点判断负载等情况将请求转发到真正节点&#xff08;一般し轮询&#xff09;

C语言-指针

1. 指针是什么 指针理解的2个要点&#xff1a; 1.1. 指针是内存中一个最小单元的编号&#xff0c;也就是地址 1.2 平时口语中说的指针&#xff0c;通常指的是指针变量&#xff0c;是用来存放内存地址的变量 总结&#xff1a;指针就是地址&#xff0c;口…

vue+element作用域插槽

作用域插槽的样式由父组件决定&#xff0c;内容却由子组件控制。 在el-table使用作用域插槽 <el-table><el-table-column slot-scope" { row, column, $index }"></el-table-column> </el-table>在el-tree使用作用域插槽 <el-tree>…

程序设计|C语言教学——C语言基础1:C语言的引入和入门

一、程序的执行 1.定义 解释&#xff1a;借助一个程序&#xff0c;那个程序能够试图理解你的程序&#xff0c;然后按照你的要求执行。下次执行的时候还需要从零开始解释。 编译&#xff1a;借助一个程序&#xff0c;能够像翻译官一样&#xff0c;把你的程序翻译成机器语言&a…

网上订餐系统|基于springboot的网上订餐系统设计与实现(源码+数据库+文档)

网上订餐系统目录 目录 基于springboot的网上订餐系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户功能模块的实现 &#xff08;1&#xff09;用户注册界面 &#xff08;2&#xff09;用户登录界面 &#xff08;3&#xff09;菜品详情界面 &#xff08…

通用视觉大模型调研

humanbench HumanBench: Towards General Human-centric Perception with Projector Assisted Pretraining&#xff1b;为了解决不同任务之间的conflict以及不同dataset之间的差异(相同任务)&#xff0c;提出PATH&#xff0c;backbone是所有任务共享、projector是任务级别共享…

gpt4和chatgpt的区别

模型规模和性能&#xff1a;GPT-4比GPT-3.5更大、更强大。GPT-4拥有更多的参数和更大的训练数据集&#xff0c;因此在各种任务上表现更出色&#xff0c;如语言理解、问题解答和推理能力等。多模态能力&#xff1a;GPT-4支持处理图像等多模态信息&#xff0c;而GPT-3.5主要处理文…

【JavaWeb】Day47.Mybatis基础操作——删除

Mybatis基础操作 需求 准备数据库表 emp 创建一个新的springboot工程&#xff0c;选择引入对应的起步依赖&#xff08;mybatis、mysql驱动、lombok&#xff09; application.properties中引入数据库连接信息 创建对应的实体类 Emp&#xff08;实体类属性采用驼峰命名&#xf…

LeetCode236:二叉树的最近公共祖先

题目描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个节点 p、q&#xff0c;最近公共祖先表示为一个节点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可能大&#xff08;一个节点也可以是…

ECharts:五大卓越在线示例库助力高效数据可视化开发

1. ECharts官方示例库 ECharts官网提供的示例库是最权威、最新的展示平台&#xff0c;涵盖了所有基础和高级图表类型&#xff0c;每个示例都配有详尽的代码解释和配置说明。开发者可以直接查看源代码&#xff0c;复制粘贴后稍加修改就能应用于实际项目中。 2. Make A Pie - EC…

制作一个RISC-V的操作系统十一-定时器中断

文章目录 CLINT定时器中断mtimemtimecmp机制总体框架流程时间节拍系统时钟代码 CLINT 产生软件中断和定时器中断 定时器中断 mtime 类似计数器&#xff0c;按照硬件对应的固定频率递增 上电后会自动复位为0&#xff0c;有硬件自动完成 mtimecmp 需要自己设置&#xff0…

【计算机考研】目标学校改考408,报考人数大量减少,第二年能捡漏吗?

关键还是要看往年&#xff0c;最近三年的成绩。如果突然暴跌的话一定要注意第二年是否会弹很厉害。有时候408的学校就是一场博弈论&#xff0c;选择大于努力。 从大部分情况来看&#xff0c;爆冷后第一年回弹还是有限&#xff0c;但是第三年可能会爆热。 然后谈一下备考。 首…

【Web】NewStarCTF 2022 题解(全)

目录 Week1 HTTP Head?Header! 我真的会谢 NotPHP Word-For-You Week2 Word-For-You(2 Gen) IncludeOne UnserializeOne ezAPI Week3 BabySSTI_One multiSQL IncludeTwo Maybe You Have To think More Week4 So Baby RCE BabySSTI_Two UnserializeT…

跨境电商干货:如何提升亚马逊店铺质量?

亚马逊作为全球最大的电子商务平台之一&#xff0c;吸引了无数卖家和买家参与其中。在这个竞争激烈的环境中&#xff0c;要想提升亚马逊店铺的质量和业绩&#xff0c;需要采取一系列有效的策略和工具。而住宅IP代理作为一个强大的网络工具&#xff0c;也在其中发挥着重要的作用…

02_Fixture定位,Caliper卡尺工具,几何学工具

Fixture定位工具 需求: 测量工件的尺寸 使用Caliper(卡尺)工具 这个时候需要借助Fixture工具 VisionPro中的图像空间 “” 图像的当前空间&#xff0c;即CogImage中的“SelectedSpaceName”表示的名字空间 “#” 像素空间&#xff0c;即坐标原点为图片左上角的坐标空间&am…

张大哥笔记:搭建一个网站有什么好处?如何搭建网站?

如果你有一个网站&#xff0c;你可以迅速聚集和结识五湖四海的人&#xff0c;男女老少&#xff0c;各个年龄段的都有&#xff0c;甚至还有很多不是从事 IT 行业的人&#xff0c;他们会让你学习到更多知识&#xff0c;了解到更大的世界&#xff01; 至于作用嘛&#xff0c;最直…

Java面试八股之Iterator接口和Iterable接口

1. Java为什么不直接实现Iterator接口&#xff0c;而是实现Iterable? 这道题算是一道比较基础的题&#xff0c;面试官肯定也不是想让回答得多深入&#xff0c;只是考查对迭代器的了解程度&#xff0c;最好是看过源码&#xff0c;实际上迭代器的源码并不难。我们把注释折叠起来…

【NUCLEO-G071RB】003——GPIO-按键控制LED灯

NUCLEO-G071RB&#xff1a;003——GPIO-按键控制LED灯 设计目标电路原理图芯片配置程序修改 设计目标 用输入控制输出&#xff0c;即以蓝色按键B1的输入控制LED4灯的输出 细节&#xff1a; 若判定为按键按下中&#xff0c;则LED灭灯&#xff0c;否则亮灯按键按下和抬起的检查…