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

多对一添加操作

 

场景:现在想要添加一个新客户对应一个新订单,那么要怎么来添加呢?

分析:由于添加订单时,客户对订单是一对多的关系,所以添加订单的时候必须要指明一位客户
要同时添加新客户以及一个新订单,并且两者是对应关系,那么应当先将客户添加进来,再添加订单,同时这个订单的外键(cust_id)指向了刚刚添加的客户的主键(cust_id)。

CustomerMapper 接口中添加一个方法:

/*保存客户*/
public void insertCustomer(Customer customer);

CustomerMapper 映射文件中,写SQL:
关键点在于将 useGeneratedKeys 设置为 true,然后将 cust_id 赋给添加的对象。

<!--保存客户-->
<insert id="insertCustomer" parameterType="customer"useGeneratedKeys="true"keyColumn="cust_id"keyProperty="cust_id">INSERT INTO `customer` (cust_name,cust_profession,cust_phone,email)VALUES (#{cust_name},#{cust_profession},#{cust_phone},#{email})</insert>

此时可以添加一位新客户,并且我们可以获取它的 id。

public void test3(){SqlSession sqlSession = MybatisUtils.openSession();CustomerMapper customerMapper = sqlSession.getMapper(CustomerMapper.class);OrderMapper orderMapper = sqlSession.getMapper(OrderMapper.class);Customer customer = new Customer();customer.setCust_name("新客户6666");customer.setCust_phone("666666");customer.setEmail("666@666.com");customer.setCust_profession("新职业666");/*先添加客户 获取客户生成的id 再去添加订单*/customerMapper.insertCustomer(customer);System.out.println(customer);sqlSession.commit();sqlSession.close();}

添加了客户后,我们便可以获取客户生成的 id,然后就可以添加订单。

OrderMapper.java 接口中添加一个新方法:

/*保存订单*/
public void insertOrder(Order order);

OrderMapper.xml 映射文件中添加写 SQL:

<!--保存订单-->
<insert id="insertOrder" parameterType="order">insert into `order` (order_name,order_num,cust_id)values (#{order_name},#{order_num},#{customer.cust_id})
</insert>

测试代码:

public void test3(){SqlSession sqlSession = MybatisUtils.openSession();CustomerMapper customerMapper = sqlSession.getMapper(CustomerMapper.class);OrderMapper orderMapper = sqlSession.getMapper(OrderMapper.class);Order order = new Order();order.setOrder_name("新订单666");order.setOrder_num("666666666");Customer customer = new Customer();customer.setCust_name("新客户6666");customer.setCust_phone("666666");customer.setEmail("666@666.com");customer.setCust_profession("新职业666");order.setCustomer(customer);/*先添加客户 获取客户生成的id 再去添加订单*/customerMapper.insertCustomer(customer);System.out.println(customer);/*保存订单*/orderMapper.insertOrder(order);sqlSession.commit();sqlSession.close();}

运行效果:先添加了一名新客户,然后添加了一个新订单,并且这个订单指向了新客户。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

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

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

相关文章

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

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

HiveSQL常用优化方法全面总结

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

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

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

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

查询所有客户以及对应的订单 目录 左连接查询&#xff08;不支持懒加载&#xff09;分步查询&#xff08;支持懒加载&#xff09;左连接查询&#xff08;不支持懒加载&#xff09; 场景&#xff1a;我们想要查询出所有的客户&#xff0c;并且把每个客户对应的订单也查出来。…

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

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

14-多对多关系建表

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

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

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

CF7D-Palindrome Degree【字符串hash,dp】

正题 luogu链接:https://www.luogu.org/problemnew/show/CF7D 题目大意 定义kkk级回文串为一个字符串的(1,⌊n/2⌋)(1,\lfloor n/2 \rfloor)(1,⌊n/2⌋)和(n−⌊n/2⌋,n)(n-\lfloor n/2 \rfloor,n)(n−⌊n/2⌋,n)都是k−1k-1k−1级回文串。 求这个字符的所有前缀的回文串等级…

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

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

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

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

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

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

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

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

2.数据湖DeltaLake之DDL操作

转载自 2.数据湖DeltaLake之DDL操作 前面讲了delta lake简介&#xff0c;特性及基本操作。本文主要是讲DeltaLake的DDL操作&#xff0c;实际上是依赖于spark datasourcev2 和catalog API&#xff08;3.0&#xff09;的&#xff0c;所以Deltalake整合spark的时候最好是3.0开始…

jzoj4804-[NOIP2016提高A组模拟9.28]成绩调研【指针,模拟】

正题 题目大意 求一个序列里有多少个区间满足kkk的个数在lr∼rkl_r\sim r_klr​∼rk​之间 解题思路 首先十分显然对于一个固定的右端点rrr可以匹配的左指针一定是一个区间[L2..L1−1][L_2..L_1-1][L2​..L1​−1]。 也就是[L2..L1−1][L_2..L_1-1][L2​..L1​−1]任意一个作…

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

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

(八)IT_开发常用单词大全

开发单词 单词 音标 注释 a collection of… 一组… a couple of… 几个 a kind of 一种 a number of… 许多… a point in time n.时间点 a set of… 一组… a series of 一系列 ability [əbɪlətɪ] n.能力 absence [ˈbsəns] …

1.数据湖deltalake初识

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

Quartz.NET 3.0 正式发布

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

jzoj4805-[NOIP2016提高A组模拟9.28]跟踪【dfs,树】

正题 题目大意 一棵树一个人从sss开始&#xff0c;有两个追击者从p,qp,qp,q出发&#xff0c; 在3k1s3k1\ s3k1 s&#xff0c;那个人走 在3k2和3k3s3k2和3k3\ s3k2和3k3 s&#xff0c;追击者走。 求那个人最久多久不会被追上。 解题思路 首先计算出每个点距离两个追击者和那个…

ScheduledThreadPool中的Leader-Follow模式你知道不?

转载自 ScheduledThreadPool中的Leader-Follow模式你知道不&#xff1f; ScheduledThreadPoolExecutor 是java中一个非常常用的定时调度的工具&#xff0c;其提供了两种定时调度常用模式: 1.固定调度周期的任务执行。 2.固定延迟间隔的任务执行&#xff0c;延迟间隔表示的是…