Mybatis实现映射,一次查询和嵌套查询

1.实现映射

Mybatis的最大魅力就在于它的语句映射。实现映射一般有一下三种方法:

当我们在数据库的列名和java中的属性名完全相同时,mybatis会自动映射并将查询结果封装。

对于由多个单词组成的名字时(例如studentgender),在java中使用标准驼峰命名(studentGender),在数据库中使用下划线连接命名(student_gender)。然后在mybatis的全局配置文件里面的settings即设置标签里面开启驼峰命名映射,也可以实现自动映射。

而有些情况需要在映射文件里面配置resultMap标签实现手动映射:

比如在多表关联的时候,往往就需要用该标签来实现。在这里主要讨论它的两个子标签的区别。       该标签里面有两个子标签:association(一个复杂类型的关联) 和 collection (一个复杂类型的集合)。

association标签主要用于多对一或者一对一的情况,collection主要用在一对多或者多对多的情况。

比如查询一个学生的信息,我们想知道他住的宿舍的一些相关信息,首先要明确一个学生肯定是在一个宿舍住着,也就是一对一的关系,那么我们查询一个学生的结果里面就包含一个宿舍类,这种情况就用association标签。

如果查询一个宿舍以及该宿舍里面的学生的一些相关信息,因为一个宿舍里面肯定是有多个学生的,也就是一对多的关系,那么我们查询一个宿舍的结果里面就包含一个泛型为学生的集合类,这个集合里面就包含该宿舍的每个学生的信息。这种情况就用collection标签。

2.一次查询和嵌套查询

在查询过程中,我们可以分为一次查询和嵌套查询两种。

一次查询:

sql语句只有一条,它直接通过sql语句把表关联起来然后拿到需要的数据。然后在resultMap标签里面把不同的数据封装到对应的对象里面。association标签只需属性property和javaType(这里用association标签举例说明)。

如图:假设查询一个学生的id,学号,姓名,性别,所在宿舍的宿舍号以及宿舍是几人间,还有对应的管理员帐户。

嵌套查询:

将一个多表关联查询拆分为多次查询,先查询主表数据,然后查询关联表数据。

sql语句有多条;association标签还需要添加select和column两个属性。锁定该标签对应的查询和外键。

如图:上述例子对应的嵌套查询

在进行宿舍的综合查询时,很明显地感觉到两者之间的一些差异,在日志里面可以看到一次查询就是直观地把sql语句执行的结果体现出来。而嵌套查询已经进行了一些封装。

假设有两个学生住在同一个宿舍,如果使用一次查询,在日志里面显示就是两条记录。但是嵌套查询会将这两个学生封装到一个宿舍的学生集合里面,这样在日志里面就是一条记录。也就是说如果使用嵌套查询,通过控制台的日志就可以看出是否达到我们想要的效果。

如图:这是在mysql中查询的语句和结果(这里只是普通的关联,没有使用分组)。可以看到总共有五条记录。但实际上老一和老三应该在一个宿舍里面,老二和老五应该在一个宿舍里面,所以应该是3条记录。

使用一次查询:

控制台显示的日志如图:

可以看到共有5条记录。

结果如图:

很明显看到,在同一个宿舍的同学被封装到一个集合里面,这样就成了三条记录。

使用嵌套查询:

控制台的日志如图:

 此时已经将在同一个宿舍的学生封装在一个宿舍的集合类里面

 结果如图:

可以看到,和一次查询得到的结果完全一样。

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

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

相关文章

时序预测 | Matlab基于灰色隐马尔可夫模型(HMMP-GM11)的时间序列预测

时序预测 | Matlab基于灰色隐马尔可夫模型(HMMP-GM11)的时间序列预测 目录 时序预测 | Matlab基于灰色隐马尔可夫模型(HMMP-GM11)的时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 灰色HMMP-GM11改进模型,通过引入隐马尔可夫模型(HMM)来对原始数据进行状态分…

单调栈练习(五)— 子数组的最小值之和

题目 同样的LeetCode原题:题目链接 给定一个整数数组 arr,找到 min(b) 的总和,其中 b 的范围为 arr 的每个(连续)子数组。 由于答案可能很大,因此 返回答案模 10^9 7 。 思路 暴力解 先来说暴力解的思路…

OpenssH 漏洞修复

文章目录 OpenSSH 漏洞修复需求:准备环境配置阿里云yum源关闭防火墙 && SELinux安装 telnet-server安装 zlib 软件包安装OpenssL安装 OpenssH报错信息 OpenSSH 漏洞修复 场景: CentOS Stream 9 系统ssh默认版本一般是OpenSSH_8.7p1 ,…

【国内访问github不稳定】可以尝试fastgithub解决这个问题

1、下载 https://github.com/dotnetcore/FastGithub https://github.com/dotnetcore/FastGithub/releases 官网下载即可,比如,我用的是这个:fastgithub_osx-x64.zip(点这里下载) 2、安装 如下图双击启动即可 3、…

科研绘图(二)气泡图

气泡矩阵图(Bubble Matrix Plot),通常用于显示三个变量之间的关系。这种图表类型将数据点表示为气泡的形式,其中气泡的大小通常表示第三个数值变量的大小。图表的X轴和Y轴代表两个分类或定量变量。颜色可能代表另一个分类变量或是…

CAN总线通信详解 (超详细配34张高清图)

CAN总线通信详解 (超详细配34张高清图) 1. CAN总线历史 CAN 是 Controller Area Network 的缩写(以下称为 CAN),是 ISO国际标准化的串行通信协议。 在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求&#…

Python爬虫---scrapy shell 调试

Scrapy shell是Scrapy提供的一个交互式shell工具,它可以帮助我们进行爬虫的开发和调试。可以使用它来测试xpath或css表达式,查看它们是如何工作的,以及它们从你试图抓取的网页中提取的数据。它允许你在编写spider时交互地测试表达式&#xff…

图像异或加密及唯密文攻击

异或加密 第一种加密方式为异或加密,异或加密的原理是利用异或的可逆性质,原始图像的像素八位bit分别与伪随机二进制序列异或,得到的图像就为加密图像。如下图对lena图像进行加密。 伪随机序列为一系列二进制代码,它受加密秘钥控…

CSS样式学习

html超文本传输标签&#xff0c;属性等权重 outline 标签轮廓 <input type"text"> <textarea cols"30" rows"10"></textarea> outline: none; 表示无轮廓 &#xff08;开发时用的比较多&#xff09; CSS 轮廓&#xff…

数据结构入门到入土——栈(Stack)和队列(Queue)

目录 一&#xff0c;栈&#xff08;Stack&#xff09; 1.1 概念 1.2 栈的使用 1.3 栈的模拟实现 1.4 栈的应用场景 1.5 栈&#xff0c;虚拟机栈&#xff0c;栈帧有什么区别&#xff1f; 二&#xff0c;队列&#xff08;Queue&#xff09; 2.1 概念 2.2 队列的使用 2.3 …

前端js调用Lodop实现云打印

一、下载Lodop控件 官网&#xff1a;下载中心 - Lodop和C-Lodop官网主站 二、解压后安装 双击进行安装&#xff0c;里面有些页面文件是一些教程案例 勾选云服务工作模式 安装成功会自动启动 浏览器访问地址&#xff1a;http://localhost:8000/ 首页最下面有个教程案例跳转地址&…

DNS 域名解析

一 、名字解析介绍和DNS 当前TCP/IP网络中的设备之间进行通信&#xff0c;是利用和依赖于IP地址实现的。但数字形式的IP地址是很难记忆的。当网络设备众多&#xff0c;想要记住每个设备的IP地址&#xff0c;可以说是"不可能完成的任务"。那么如何解决这一难题呢&…

蓝桥杯单片机进阶教程4——需要分配进程的模块

前言&#xff1a; 【蓝桥杯单片机保姆级教学】 https://www.bilibili.com/video/BV1h3411m7Aw/?p117&share_sourcecopy_web&vd_sourcec4fc67867c5218768e783d04475bc5a2 P117-118 比赛的时候也按照这个顺序来写 一、数码管显示 分析考题 &#xff08;1&#xff09;…

javascript_forEach中使用异步函数执行顺序问题,错误原因+解决思路

javascript_forEach中使用异步函数执行顺序问题&#xff0c;错误原因解决思路 start 最近在写异步逻辑的时候&#xff0c;经常会使用 async/await。有些时候需要执行异步逻辑的函数比较多&#xff0c;就习惯用 forEachasync/await 去处理函数了。在测试的过程中会发现&#x…

Unity之角色控制器

PS:公司终于给我派任务了&#xff0c;最近几天都没学Unity&#x1f927;。 一、角色控制器的实现方式 目前小编知道的角色控制器实现方式有三种&#xff1a; 应用商店的角色控制系统Unity自己的角色控制器通过物理系统去做角色控制器 本篇介绍的是第二种Unity自己的角色控制…

数字化时代,VR全景展示如何让用户一窥全貌?

数字化时代&#xff0c;VR全景展示为各行各业提供了无限的可能性。随着VR全景技术的逐步普及&#xff0c;VR全景展示以其独特的呈现方式和新颖十足的交互体验&#xff0c;正在不断改变着人们对于展示宣传的理解。 传统的展示方式&#xff0c;通常需要将产品、图文、品牌等元素集…

滴水内存地址堆栈

两个十六进制数 刚好是一个字节刚好 DC这的一个字节数据为E4 一个内存地址 后面表示四个字节的数据 所以有八个十六进制的数 BASE是高地址 所以放入一个四字节后就 -4

RK3568驱动指南|第十二篇 GPIO子系统-第136章 实战:实现动态切换引脚复用功能

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

sectigo ip证书种类买一年送一月

Sectigo旗下的IP证书是专为只有公网IP地址的网站准备的。Sectigo旗下的数字证书大多是域名证书&#xff0c;例如&#xff0c;单域名SSL证书、多域名SSL证书、通配符SSL证书等。这些证书申请时必须验证域名所有权&#xff0c;申请者需要有一个拥有管理全的域名网站&#xff0c;那…

SRM供应商招标采购管理系统(源码)

软件相关资料获取&#xff1a;点我获取 一、SRM供应商在线采购 SRM供应商在线采购是指企业通过互联网平台&#xff0c;实现对供应商的在线招募、选择、关系管理等一系列活动。这种采购方式具有高效、透明、便于管理的特点&#xff0c;能够帮助企业降低采购成本&#xff0c;提…