MyBatis结果集复杂映射超详细版(一对多关系映射)

news2024/9/20 13:16:30

目录

1.一对多关系映射

1.1创建两个表:goods表与goods_class表

1.2xml文件中两部分:与(存放SQL语句)1.3数据库中:测试SQL语句,涉及到的知识点:左连接


1.一对多关系映射

1.1创建两个表:goods表与goods_class表

1.2xml文件中两部分:<resultMap>与<select>(存放SQL语句)

<resultMap id="withGoodsClazz" type="com.zpark.app.entity.Clazz">
    <id column="cId" property="id"/>
    <result column="cName" property="name"/>
    <collection column="gId" property="goodsList" ofType="com.zpark.app.entity.Goods">
        <id column="gId" property="id"/>
        <result column="gName" property="name"/>
        <result column="gIntro" property="intro"/>
        <result column="cId" property="classId"/>
    </collection>
</resultMap>
​
<select id="selectWithGoods" resultMap="withGoodsClazz">
    SELECT c.id as cId, c.name as cName, g.id as gId, g.name as gName, g.intro as gIntro
    FROM goods_class c
             LEFT JOIN goods g ON c.id = g.class_id
</select>

resultMap标签:id用来为这个resultMap指定一个唯一的标识符。该值必须与select标签中的resultMap属性一致。type则用来指定这个resultMap所映射的Java对象类型,上述例子中用于映射到Clazz类的实例。

id标签:用于指定主键字段的映射。column属性指定数据库表中的列名,而property属性指定Java对象中的属性名。

result标签:用于指定非主键字段的映射。

collection标签:用于处理一对多或多对多的关系映射。column属性指定外键列名,property属性指定Java对象中用于存储集合的属性名(在上述示例中切记要在Clazz实体类中创建goodsList属性,返回类型为List<Goods>),ofType属性指定集合中元素的类型。

嵌套的id和result标签:用法及作用与上述一致。

select标签:用来存储SQL语句,这里用到了数据库中的左连接,会在下方讲解。


1.3数据库中:测试SQL语句,涉及到的知识点:左连接

左连接:用于将两个或多个表按照指定的连接条件连接起来,并返回左表(FROM子句中指定的表)的所有记录以及右表(JOIN子句中指定的表)中匹配的记录。如果右表中没有匹配的记录,则结果集会返回NULL。

基本语法:

SELECT 想要选择的字段 FROM 左表表名 LEFT JOIN 右表表名 ON left_table.column_name = right_table.column_name;(两个表中用来连接的共同字段)

SELECT
	c.id AS cId,
	c.NAME AS cName,
	g.id AS gId,
	g.NAME AS gName,
	g.intro AS gIntro 
FROM
	goods_class c
	LEFT JOIN goods g ON c.id = g.class_id

查询结果:

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

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

相关文章

C++对C的扩充(8.28)

1.使用C手动封装一个顺序表&#xff0c;包括成员数组1个&#xff0c;成员变量n个 代码&#xff1a; #include <iostream>using namespace std;//类型重命名 using datatype int; #define MAX 30struct seqList { private: //私有权限datatype *data; //相当于 …

【项目源码】终于有人将打字游戏和编程英语结合起来啦!编程初学者的福音

Hello&#xff01;各位彦祖&#xff0c;亦菲们&#xff01;又是美好的一天&#xff01;今天给大家分享一个Java项目源码&#xff1a;Java打字游戏项目源码&#xff01; 看到这里&#xff0c;你可能会说&#xff01; 一个破打字游戏有什么可神气的&#xff01;&#xff01;&…

【自由能系列(中级)】状态与动作的协同机制解析 ——从马尔可夫毯到大脑功能的全方位剖析

状态与动作的协同机制解析 ——从马尔可夫毯到大脑功能的全方位剖析 Synergistic Mechanism of States and Actions —— A Comprehensive Analysis from Markov Blanket to Brain Function 核心结论&#xff1a; 中文总结&#xff1a; 系统将状态划分为内部状态和隐藏或外…

Flutter中的Key

在Flutter 中&#xff0c;Key 是 几乎所有 widget 都具有的属性。为什么 widget 具有 Key 呢&#xff1f;Key的作用是什么&#xff1f; 什么是 Key Key是Widget、Element 和 SemanticNodes 的标识符。 Key 是Widget、Element 和 SemanticNodes的唯一标识。例如对于 Widget 在 …

MyBatis的学习————下篇

目录 一、动态SQL 简介 1、if标签 2、where标签 3、trim标签 4、choose、when、otherwise 5、foreach 5.1、批量删除 5.2、批量添加 6、sql标签 二、MyBatis的缓存 1、一级缓存 2、二级缓存 3、二级缓存的相关配置 4、MyBatis缓存查询的顺序 5、 第三方缓存EHCac…

如何在Windows 11上关闭无响应的应用程序?这里有详细步骤

序言 无响应的应用程序令人沮丧,但更糟糕的是这些应用程序拒绝关闭。如果你发现自己处于这种情况,我们有几种方法可以帮助你强制关闭Windows 11 PC上的这些应用程序。让我们找出可用的解决方案。 使用键盘快捷键结束程序 关闭无响应应用程序的最简单方法是使用Windows键盘…

DataWhale AI夏令营 2024大运河杯-数据开发应用创新赛-task2

DataWhale AI夏令营 2024大运河杯-数据开发应用创新赛 YOLO(You Only Look Once)上分心得分享 YOLO(You Only Look Once) YOLO算的上是近几年最火的目标检测模型了&#xff0c;被广泛的应用在工业、学术等领域。 YOLOv1&#xff08;You Only Look Once 第一版&#xff09;于 2…

基于麒麟信安操作系统的光伏发电功率预测系统完成大规模部署建设

麒麟信安操作系统&#xff0c;作为行业数智化建设的安全根基&#xff0c;为电力业务系统提供了稳定可靠的底层平台&#xff0c;在全球能源结构转型大潮中扮演着至关重要的角色。某光伏电站项目中&#xff0c;基于麒麟信安操作系统的光伏发电功率预测系统完成大规模部署建设&…

c#如何加密exe程序防止反编译附软件

1. 先说软件&#xff0c;使用的软件是Dotfuscator&#xff0c;下载地址如下&#xff1a; 链接&#xff1a;https://pan.quark.cn/s/6f2e785c003f2. 软件使用方法&#xff0c;打开软件&#xff0c;选择Create New Project 3. 找到input&#xff0c;把你需要加密的文件导入 4.…

k8s项目的发布

目录 三种发布方式 1.蓝绿发布 2.金丝雀发布&#xff08;灰度发布&#xff09; 实验&#xff1a;k8s实现金丝雀发布 3.滚动发布&#xff08;默认形式&#xff09; 因为应用升级以及新旧业务切换&#xff0c;所以在这个过程当中如何保证对外的服务正常是一个非常重要的问题…

手把手教你如何使用Python连接MySQL数据

数据库编程是在应用程序中与数据库交互和管理数据的关键部分。MySQL是一种流行的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;在Python中进行MySQL数据库编程相对容易。 本文介绍如何使用Python进行MySQL数据库编程&#xff0c;包括连接数据库、执行SQL查询…

高频面试题:SpringMVC的执行流程

SpringMVC一直以来都是面试中的重点&#xff0c;尽管随着近年来springboot和微服务的广泛流行&#xff0c;关于对springMVC的考察比重略有下降&#xff0c;但依然是面试中的重点&#xff0c;也需要我们对其有一个比较清楚和全面的认识。 如果将java的发展史中重要的组件进行排…

备忘录模式 详解

备忘录模式 简介: 保存一个对象的某个状态&#xff0c;以便在适当的时候恢复对象, 允许在不破坏封装性的前提下&#xff0c;捕获和恢复对象的内部状态。 场景: 很多地方都用到了备忘录模式, 比如网络消息的序列化和反序列化, 数据的本地保存与加载等, 最简单的json的dump和loa…

全能与专精:探索AI模型的未来之路

AI模型&#xff1a;追求全能还是专精&#xff1f; 近日&#xff0c;OpenAI预计在秋季推出代号为“草莓”的新AI。从专注于数学问题到处理主观营销策略&#xff0c;"草莓"模型展现出惊人的多样性。而这种全能型 AI 是否代表了未来趋势&#xff1f;相比专攻于某一领域…

OpenAI 将于今年秋天推出新的先进“Strawberry草莓”生成式人工智能产品

今年秋季&#xff0c;OpenAI将推出一款备受瞩目的新型生成式人工智能产品——“草莓”。据悉&#xff0c;这款名为“草莓”的AI程序将带来一系列创新突破&#xff0c;它将大幅提升人工智能处理复杂数学题、执行战略任务以及深入探索各种主题的能力&#xff0c;而这一切无需依赖…

前景堪忧?SaaS巨头Salesforce,25年辉煌后能否继续领跑市场?

最近&#xff0c;时常听到有人说Salesforce失去了活力&#xff0c;这或许是对整个生态系统的普遍感受。多年来&#xff0c;Salesforce一直保持着巨大的发展势头&#xff0c;通过收购、创新和建立良好的合作伙伴关系已发展成为云计算行业巨头。在经历了近25年创纪录的增长和创新…

记Spring HTTP Invoker远程调用的使用(二)基于Servlet方式,配置servlet映射url-pattern实现

目录 前言 一、概念 二、代码实现 1. 服务端实现 2. 客户端实现 前言 本篇接上一篇记Spring HTTP Invoker远程调用的使用&#xff08;一&#xff09;基于Url映射方式&#xff0c;DispatcherServlet统一处理实现-CSDN博客https://blog.csdn.net/u011529483/article/details/141…

论文解读:Prompt-aligned Gradient for Prompt Tuning

摘要 得益于CLIP等大型预训练的视觉语言模型VLM&#xff0c;我们可以通过离散的提示设计构建Zero-shot分类器&#xff0c;例如&#xff0c;利用图像与提示语句" a photo of a [ CLASS ] "之间的相似度&#xff0c;可以获得图像属于某个类别的置信度分数。此外&#…

【Material UI】Select组件的Customization详解

文章目录 一、Customization的基本概念1. 什么是Customization&#xff1f;2. 为什么要定制化Select组件&#xff1f; 二、定制化InputBase组件1. 定制化InputBase的步骤2. 定制化Select组件3. NativeSelect的定制化 三、Customization的最佳实践1. 使用标准变体&#xff08;St…

JAVA后端框架【spring】--超详解

什么是spring? spring是一个轻量级的ioc和Aop的一站式java开发框架&#xff0c;简化企业级开发 轻量级&#xff1a;框架体积小&#xff08;核心模块&#xff09; IOC IOC:inversion of control 控制反转 把创建对象的控制权反转给spring框架 AOP Aop:面向切面编程 将程…