MyBatis-Plus插入值后返回主键
LZ做练手设计的时候有这样一个订单需求,先插入订单表数据(t_order),再写入订单详情表(t_orderDetail),详情表需要有一个与t_order的外键约束
t_order (
oid auto_increment primary key
)
t_orderDetail (
oid 外键约束需要t_order存在这个oid
)
因为t_orderDetail ->(oid) 是外键约束于t_order->(oid),所以需要先插入t_order再给t_orderDetail添加oid的数据。
暴力解决方案->直接查表,选择最新的数据也行,但在高并发场景下会不会有错误呢?而且又要去数据库手动select一次数据
LZ通过查找资料和解决方案,找到如下解决方案,让MP(Mybatis-Plus),MYSQL执行后返回主键的值给我:
第一步:MyBatis-Plus的xml配置文件里面使用 "useGeneratedKeys" 和 "keyProperty" 配置,如下

第二步: 直接执行这个方法,
错误的方式:LZ一开始也以为修改Mapper文件以后直接返回值就是所需要的oid主键,但测试的时候发现数据库自增多少返回值都是 1,那不就还是受影响的行数了嘛!!!

正确的方式:应该是 千万不能想当然地以为这句SQL返回值就是oid,而应该从传入的order对象中通过getter()来获取

控制台打印后果然是LZ所需要的数据,轻松秒杀。
如果这篇文章对您有帮助,希望可以点一个“推荐”,主要是想看看LZ写的这些小随笔有没有帮助到您
MyBatis-Plus插入值后返回主键的更多相关文章
- mybatis的插入数据后的主键获取
为什么要在插入数据后获取主键:当有一个订单表和订单详情表,当插入订单表的数据后,需要在订单详情表插入该订单的具体购物情况,订单详情表需要的一个列是订单表的主键或者订单ID.(通俗讲:A表的主键是B表的 ...
- Laravel 5 插入数据后返回主键ID
方法一: $info = DB::table('表名')->insertGetId(['imgName' => $fileName]);//图片名入库后返回添加数据行的主键ID 方法二:( ...
- Java MyBatis insert数据库数据后返回主键
<selectKey keyProperty="id" resultType="java.lang.Long" order="AFTER&quo ...
- SpringBoot整合MyBatis获得插入数据后获取主键,返回值总是1
xml里的写法 <insert id="insertLogin" parameterType="com.xyt.p2p.pojo.LoginInfo" k ...
- Mybatis插入数据后返回主键id
有时候使用mybatis插入数据后,需要用到记录在数据库中的自增id,可以利用keyProperty来返回,赋值给实体类中的指定字段. 单条记录插入并返回 First, if your databas ...
- Mybatis之MySql批量insert后返回主键
需求:使用批量插入后,需要insert之后的每一条记录的ID 注意:Mybatis3.3.1的版本以后支持批量插入后返回主键ID 示例: domin.java: public class User { ...
- sql新增后返回主键
对于刚学的人来说有点帮助,新增后返回主键有两种方法: 1,返回自增的主键: INSERT INTO 表名 (字段名1,字段名2,字段名3,…) VALUES (值1,值2,值3,…) SELECT @ ...
- SSM-MyBatis-12:Mybatis中添加单个对象返回主键id列
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 实体类 public class Book { private Integer bookID; private ...
- 二、sql新增后返回主键|sql 使用 FOR XML PATH实现字符串拼接|sql如果存在就修改不存在就新增
一.sql新增后返回主键 1,返回自增的主键: INSERT INTO 表名 (字段名1,字段名2,字段名3,…) VALUES (值1,值2,值3,…) SELECT @@IDENTITY 2,返回 ...
- mybatis 插入数据时返回主键
在使用MyBatis做持久层时,insert语句默认是不返回记录的主键值,而是返回插入的记录条数:显然,假如主键是你生成后插入的,自然你已经有主键了,显然不需要我们再去获得,所以我们这里处理的是当主键 ...
随机推荐
- Anaconda之conda常用命令介绍
anaconda用法: 查看已经安装的包: pip list 或者 conda list 安装和更新: pip install requests pip install requests --upgr ...
- Win10微软官方镜像iso文件下载
1.转到下载页面2.按F12后点击小窗口左上角的手机图标3:刷新页面开始下载(win10.iso:链接)
- C语言-链表流星雨(EsayX)
刷B站看到的,做个玩玩.IDE:Visual Studio 2022.依赖EsayX图形库 1-效果 2-程序 /* 链表流星雨单文件版本 依赖EsayX图形库 */ #include <std ...
- linux离线安装gcc 和g++
1.先到有网的机器上下载依赖包 sudo yum install --downloadonly --downloaddir=/home/mjb/soft/gcc gcc sudo yum instal ...
- PAT-basic-1021 个位数统计 java
一.题目 给定一个 k 位整数 N=dk−110k−1+⋯+d1101+d0 (0≤di≤9, i=0,⋯,k−1, dk−1>0),请编写程序统计每种不同的个位数字出现的次数.例如: ...
- 《CSOL大灾变》Mobile开发进度记录——武器购买界面设计
又到了休息日,有点时间继续这个移植游戏的开发.这次主要是关于武器系统模块的开发记录,关于CS以及CSOL的武器系统,它的购买菜单页面虽然谈不上复杂,但是也包含很多GUI元素,下面是CSOL其中的一个武 ...
- 使用python-docx提取word中的表格
提取表格 import docx from docx import Document #导入库 path = '123.docx' #文件路径 document = Document(path) #读 ...
- 基础实验之访问控制列表ACL应用
要求: 1,PC1,PC2,PC3互通 2,配置ACL限制PC2不能访问PC3 1,首先规划好IP,配置如上图 SW2配置 # vlan batch 10 20 # interface Vlanif ...
- 微信小程序——石头剪刀布
博客班级 https://edu.cnblogs.com/campus/zjcsxy/SE2020 作业要求 https://edu.cnblogs.com/campus/zjcsxy/SE2020/ ...
- 按list大小进行分组
package cn.tk.netcore.rest;import java.util.ArrayList;import java.util.Arrays;import java.util.List; ...