10-多对一左连接查询分步查询(查询所有订单及订单对应的客户)

左连接查询(级联查询)

回顾一下:左连接查询,将左边表(order)里的全部内容查出,右边表(customer)查满足条件的。

SELECT * FROM `order` AS o LEFT JOIN `customer` AS c on o.cust_id = c.cust_id;
  • 1

在这里插入图片描述

那么在 MyBatis 中如何查询呢?

首先我们已经将 domain 类与数据库属性对应,并且创建好了 Mapper 工程,主要来看看 Mapper 的内容:
在这里插入图片描述

在 OrderMapper 接口中我们定义了查询所有的订单的操作。
在这里插入图片描述

OrderMapper 映射文件中,我们实现了 SQL 语句。

问题在于,通过上面数据库中左连接查询的结果,我们已经知道,左连接会查出左边表(order表)的全部内容,右边表(custoer表)里满足条件的内容,所以查询出来的结果集将包含两个表的内容,此时我们的 resultType 无法直接写,我们需要利用 resultMap 自己封装一个结果集,如下图:

级联赋值方法一:
在这里插入图片描述
注:蓝线圈出的部分是可以省略的部分,由于这是 order 的表,所以自己的属性可以省略。

级联赋值方法二:association
一般来说,这种方法更常用,因为它支持分步查询用这种方法, order 属性不可省略
在这里插入图片描述

来到测试类中查询一下:
在这里插入图片描述
运行结果:成功查询出所有的订单以及他们对应的客户。
在这里插入图片描述

association 分步查询

首先回顾一下:分布查询就是查询出一条语句后,根据这条语句的查询结果,继续进行查询。

如下,我们先查询出了 order 中的结果,然后我们再根据 order 中查询出的 cust_id = 2,来查询 customer 中的结果。
在这里插入图片描述
在这里插入图片描述

在 MyBatis 中实现分步查询需要利用 association

我们要根据 order_id 查出订单的信息,再根据订单信息中的 cust_id 查出客户的信息。

我们首先实现 根据 cust_id 查询客户,再将这个作为查询的第二步,放入分步查询中。
在 CustomerMapper 接口中定义根据 cust_id 查询客户的方法:
在这里插入图片描述
在 CustomerMapper 映射文件中实现 SQL。

在 OrderMapper 接口中定义根据 order_id 查询客户信息的方法。
在这里插入图片描述

在 OrderMapper 映射文件中,实现根据 SQL。并且将上面的根据 cust_id 查询用户写入 resultMap 中的 association 中,实现了分步查询。
在这里插入图片描述

来到测试类,使用分步查询:
在这里插入图片描述

运行结果:分步查询成功,通过 order_id 查询出了 customer 的信息。
在这里插入图片描述

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

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

相关文章

入门干货之Grpc的.Net 封装-MagicOnion

0x01、Grpc1、介绍Google主导开发的RPC框架,使用HTTP/2协议并用ProtoBuf作为序列化工具,支持多种语言。在.NET Core “大更新” 之前,也就是目前来说还算是个很不错的选择。2、吐槽a、有很多性能比较的文章拿Grpc开涮.b、搭建困难&#xff0c…

11-分步查询懒加载

分步查询——懒加载模式 目录 懒加载模式示例不使用懒加载使用懒加载aggressiveLazyLoadinglazyLoadTriggerMethods所谓懒加载,也称延时加载,是指不一下子加载完全部资源。需要用到哪些资源才去加载这些资源,用不到的资源,就不去…

利用Service Fabric承载eShop On Containers

从模块化到微服务化从Pet Shop 到eShop on Container都是Microsoft在技术演进的路径上给开发者展示.Net的开发能力和架构能力的Sample工程,Petshop的时候更多的是展现应用的分层架构,设计的抽象与模块间的通讯。到了eShop on Container更多的关注在架构设…

12-多对一添加操作(添加新客户及对应的新订单)

多对一添加操作 场景:现在想要添加一个新客户对应一个新订单,那么要怎么来添加呢? 分析:由于添加订单时,客户对订单是一对多的关系,所以添加订单的时候必须要指明一位客户。 要同时添加新客户以及一个新订…

.NET Core+MySql+Nginx 容器化部署

1. 引言上两节我们通过简单的demo学习了docker的基本操作。这一节我们来一个进阶学习,完成ASP.NET Core MySql Nginx的容器化部署。本文是基于CentOS 7.4环境进行演示,示例项目可以访问Docker.NetCore.MySql进行下载。2. Hello MySQL同样我们还是以循序…

HiveSQL常用优化方法全面总结

转载自 HiveSQL常用优化方法全面总结 Hive作为大数据领域常用的数据仓库组件,在平时设计和查询时要特别注意效率。影响Hive效率的几乎从不是数据量过大,而是数据倾斜、数据冗余、job或I/O过多、MapReduce分配不合理等等。对Hive的调优既包含对HiveQL语…

P3597-[POI2015]WYC【矩阵乘法,倍增】

前言 正题 题目链接:https://www.luogu.org/problemnew/show/P3597 题目大意 问第kkk长的路径长度(非简单路径) 解题思路 先考虑kkk比较小时的情况,我们可以求出长度为111的路径,长度为222的路径,然后以此类推找到第一个与前面的和到kkk就…

13-一对多左连接查询分步查询(查询所有客户及客户对应的订单)

查询所有客户以及对应的订单 目录 左连接查询(不支持懒加载)分步查询(支持懒加载)左连接查询(不支持懒加载) 场景:我们想要查询出所有的客户,并且把每个客户对应的订单也查出来。…

实战 | 利用Delta Lake使Spark SQL支持跨表CRUD操作

转载自 实战 | 利用Delta Lake使Spark SQL支持跨表CRUD操作 供稿 | eBay ADI-Carmel Team 作者 | 金澜涛 编辑 | 顾欣怡 本文7309字,预计阅读时间22分钟 导读 本文介绍eBay Carmel团队利用Delta Lake,使Spark SQL支持Teradata的Update/Delete语法。…

14-多对多关系建表

多对多关系建表 目录 多对多关系多对多关系建表原则domain多对多关系 一个老师可以教多个学生,一个学生可以被多个老师教。一个学生可以选择多门课程,一门课程可以被多个学生选择。一个用户可以选择多个角色,一个角色可以被多个用户选择。…

DevOps文档中心的技术实践演进

这应该算是《Git企业开发者教程》的篇外篇,介绍一下这个教程是怎样写出来的。相信每个技术人都有类似下面的文件夹,保存着你辛苦工作的成果。实际的感觉:看着闹心,弃之不舍。一份文档久经修改,不能定稿,循环…

MySQL UPDATE 语句一个“经典”的坑

转载自 MySQL UPDATE 语句一个“经典”的坑 来源:ju.outofmemory.cn/entry/336774 有问题的SQL语句 why? 倒回去再重试验一把 最近好几次有开发同学在钉钉上问我,比如下图: 问题归纳起来就是:在MySQL里面update一条记录&…

jzoj4803-[NOIP2016提高A组模拟9.28]求导【模拟】

正题 题目大意 求一个标准多项式的求导 解题思路 暴力模拟即可,注意细节即可 一下是贴心的坑爹细节样例 (233x)−>(1)而不是(1)(233x)->(1)而不是(1)(233x)−>(1)而不是(1) (1)−>(0)而不是()(1)->(0)而不是()(1)−>(0)而不是() codecodecode …

g4e基础篇#1 为什么要使用版本控制系统

本篇是Git企业开发者教程基础篇的第一篇1. 基础篇:为什么要使用版本控制系统Git 分布式版本控制系统的优势Git 安装和设置初始化Git存储库(Repo)起步 1 – 创建分支和保存代码起步 2 – 了解Git历史记录起步 3 – 拉取请求 Pull Request 工作机制Git是一种版本控制系…

15-多对多做左连接查询(查询老师,并且把关联的学生也查出来)

多对多左连接查询 目录 左连接查询老师对学生是多对多的关系,把中心放在老师上,一个老师可以教多个学生,实际上老师对学生也可以理解为一对多的关系。 左连接查询 场景:查询老师,并且把关联的学生也查出来。 Teac…

.Net 如何模拟会话级别的信号量,对http接口调用频率进行限制(有demo)

现在,因为种种因素,你必须对一个请求或者方法进行频率上的访问限制。 比如, 你对外提供了一个API接口,注册用户每秒钟最多可以调用100次,非注册用户每秒钟最多可以调用10次。比如, 有一个非常吃服务器资源的…

1.数据湖deltalake初识

转载自 1.数据湖deltalake初识 1.delta特性简介 Delta Lake是Spark计算框架和存储系统之间带有Schema信息数据的存储中间层。它给Spark带来了三个最主要的功能: 第一,Delta Lake使得Spark能支持数据更新和删除功能; 第二,Del…

Quartz.NET 3.0 正式发布

Quartz.NET是一个强大、开源、轻量的作业调度框架,你能够用它来为执行一个作业而创建简单的或复杂的作业调度。它有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等。在2017年的最后一天Quartz.…

(九)IDEA便捷配置MyBatis.xml文件

在使用IDEA新建mybatis.xml经常需要手动复制粘贴之前的xml配置。这样也比较麻烦。我们可以IDEA进行关于xml的配置 1.创建MyBatis Config的模版 1.打开新增2.查看编辑页面查看编辑页面 我们看到Name:为我们新增模版的文件名称。Extension:为我们新增文件…

用 Identity Server 4 (JWKS 端点和 RS256 算法) 来保护 Python web api

目前正在使用asp.net core 2.0 (主要是web api)做一个项目, 其中一部分功能需要使用js客户端调用python的pandas, 所以需要建立一个python 的 rest api, 我暂时选用了hug, 官网在这: http://www.hug.rest/.目前项目使用的是identity server 4, 还有一些web api和js client.项目…