多对一添加操作

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

分析:由于添加订单时,客户对订单是一对多的关系,所以添加订单的时候必须要指明一位客户
要同时添加新客户以及一个新订单,并且两者是对应关系,那么应当先将客户添加进来,再添加订单,同时这个订单的外键(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();}

运行效果:先添加了一名新客户,然后添加了一个新订单,并且这个订单指向了新客户。

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

  1. 【MyBatis笔记】12-多对一添加操作(添加新客户及对应的新订单)

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

  2. [PowerBI]两种方法计算每月或每季开发的新客户数量

    12月追加:欢迎加入知乎[微软BI技术圈],一起讨论.分享包括PowerBI在内的一切BI话题! 两种方法计算每月或每季开发的新客户数量 简述 客户分析中,有时你可能需要分析每隔一段时间有多少新客户流 ...

  3. 12个成功案例,告诉你提升客户体验新方法!

    根据皮尤研究中心发布的一份报告,86%的买家愿意为获得完美的客户体验支付更多的费用.同时,73%的买家表示:他们在做出购买决定时,会将客户体验作为一个重要的因素.为了解当今和未来的客户,企业应清楚客户 ...

  4. 【MOS】OCR/Vote disk 维护操作: (添加/删除/替换/移动) (文档 ID 1674859.1)

    [MOS]OCR/Vote disk 维护操作: (添加/删除/替换/移动) (文档 ID 1674859.1) 文档内容 目标 解决方案   准备磁盘   1. 磁盘大小   2. 裸设备或者块设备 ...

  5. android如何在底部显示四个按钮,[Android系列—] 四. 添加操作栏(Action Bar)

    [Android系列-] 4. 添加操作栏(Action Bar) 前言 操作栏是最重要的设计元素之一,使用它来实现你的应用程序活动.通过提供多种用户界面功能, 使应用程序快速和其他的Andorid应 ...

  6. 【jQuery笔记Part4】01-jQuery-节点操作-添加节点-删除节点-复制节点

    节点操作 添加节点 静态页面 内部添加(父子关系) append(): 添加节点->追加到最后 (父子关系) appendTo(tag): 把创建的节点添加到指定节点之后(父子关系) prepe ...

  7. 计算机中磁盘怎么添加,如何添加新硬盘到磁盘组Windows系统 -电脑资料

    I.首先是物理上添加,具体方法上封邮件中有写到: 首先是物理上添加,需要将磁盘阵列断电,然后顺序添加5块新硬盘到磁盘阵列,磁盘阵列加电,在系统命令行下执行如下操作: #devfsadm -C #dev ...

  8. Pandas知识点-添加操作append

    Pandas知识点-添加操作append 在Pandas中,append()方法用于将一个或多个DataFrame或Series添加到DataFrame中.append()方法也可以用于合并操作,本文 ...

  9. tableau 集动作_在Tableau中通过添加操作,控制集并高亮显示数据

    最近看到一个public作品,用添加集动作的方式来高亮显示数据(直达),感觉特别有用,所以自己研究了一下,现在把操作过程记录下来,供大家参考学习. 原作品 我用自带的超市数据来做一个复现,我想做一个不 ...

最新文章

  1. Qt 控件渐变隐藏消失
  2. [转]第(前)k大数问题
  3. 关闭Windows自动更新
  4. 【Yarn】Yarn : 日志管理
  5. Linux格式化硬盘为nvme0n1,安装ubuntu16.04系统及解决/dev/nvme0n1p7:clean...block黑屏问题...
  6. Docker容器镜像删除不掉解决办法?
  7. 【clion】自定义优美的代码配色(主题)
  8. 【视频编码格式】全面解析
  9. 大数据项目实战——基于某招聘网站进行数据采集及数据分析(五)
  10. 电子书下载:Adobe PDF 文档格式开发参考 PDF Reference 1.7
  11. AdGuard过滤规则
  12. 关于前端video标签视频无法拖动进度条快进问题(Django)
  13. 1000行代码徒手写正则表达式引擎【1】--JAVA中正则表达式的使用
  14. setTextColor的几种方式 CrashHandler使用demo:
  15. 我们怎样处理垃圾网站举报?
  16. 数据平面开发套件:DPDK
  17. C语言 自定义字符串拼接函数
  18. 2016iOS之UI基础视频-传智-专题视频课程
  19. ISO13485医疗器械体系认定意义
  20. 动手学数据分析 第一章之探索性数据分析

热门文章

  1. [Java基础]反射获取成员方法并使用练习
  2. [Java网络编程基础]网络编程概述,三要素,IP地址
  3. [剑指offer]面试题13:在O(1)时间删除链表结点
  4. dptcpp 题目 2352: [信息学奥赛一本通-T1440]数的划分-dp
  5. java 日志乱码_【开发者成长】JAVA 线上故障排查完整套路!
  6. maven 排除配置文件打包_Maven打包pom里面配置exclude 排除掉环境相关的配置文件...
  7. P3768 简单的数学题(杜教筛)
  8. ARC077E - guruguru(差分)
  9. 牛客题霸 [比较版本号] C++题解/答案
  10. [学习笔记] 初次见面,请多关照 (公式推导+题集)——杜教筛