【Mybatis】数据插入数据库时,获取自增主键

深入分析Mybatis 使用useGeneratedKeys获取自增主键 摘要 我们经常使用useGenerateKeys来返回自增主键,避免多一次查询。也会经常使用on duplicate key update,来进行insertOrUpdate,来避免先query 在insert/update。用起来很爽,但是经常踩坑,还不知为何。本篇就是深入分析获取自增主键的原理。 问题 首先摘两段我司一些老代码的bug 批量插入用户收藏 for (tries = 0; trie... 阅读详情

在mybatis的XML文件时,配置useGeneratedKeys和KeyProperty属性,且这两个属性不能省略。
useGeneratedKeys属性,要求数据库本身具备主键自动增长的功能。
KeyProperty属性,java对象的属性名,也就是要获取的字段。

  1. 在Mybatis Mapper 中,如下配置。
    <!-- 插入 -->
    <insert id="insert" parameterType="com.liuxs.pojo.OrderPo"
        useGeneratedKeys="true" keyProperty="id">
        insert into T_name
        <trim prefix="(" suffix=")" suffixOverrides=",">
            id,
            <if test="remarks != null">
                remarks,
            </if>
            <if test="state != null">
                state,
            </if>
        </trim>

        <trim prefix="values (" suffix=")" suffixOverrides=",">
            #{id,jdbcType=BIGINT},
            <if test="remarks != null">
                #{remarks,jdbcType=VARCHAR},
            </if>
            <if test="state != null">
                #{state,jdbcType=INTEGER},
            </if>
        </trim>
    </insert>
  1. java配置如下
    /**
     * 新增备件
     * @param orderPo
     * orderPo中remarks和status用Set方法赋值
     * @return
     */
    @RequestMapping(value = "/insert")
    @ResponseBody
    public Long insert(OrderPo orderPo) {
        Long count = orderService.insert(orderPo);
        System.out.println("共插入" + count + "条记录!"
                + "\n刚刚插入记录的主键自增长值为:" + orderPo.getId());
QCustomPlot实现毫秒级时间轴数据的动态可视化与实时刷新优化 本文深入探讨了如何利用QCustomPlot库高效实现毫秒级时间轴数据的动态可视化与实时刷新。文章从基础配置讲起,详细介绍了时间轴初始化、数据平滑滚动、增量更新与内存管理等核心优化技巧,并分享了应对高频数据的缓冲策略及OpenGL硬件加速等高级优化手段,旨在解决实时图表卡顿问题,提升流畅度。 阅读详情

相关推荐

避坑指南:RK3568双网口RMII模式DTS配置常见错误与调试技巧

本文详细解析了RK3568双网口RMII模式DTS配置中的常见错误与调试技巧,涵盖时钟配置、PHY识别、复位时序等关键问题。通过实战案例和系统化调试方法,帮助开发者快速解决百兆以太网连接不稳定、PHY识别失败等典型问题,提升开发效率。

weixin_42549037的博客 345

Mybatis 获取自增主键ID的几种方式

很多时候新增了一条数据之后,不仅要知道是否插入成功,还需要获取存入之后的主键id 以便后续使用。Mybatis在数据添加成功后会将insert的数据的主键返回赋到实体类对象中,用户可以直接通过对象.getId()获取到主键!指定了要将自动生成的主键值赋给 id 属性。插入操作完成后,通过访问 id 属性即可获取到自动生成的主键值。即选择当前表中最大的id作为主键id,实现了自增效果;注解来为任意SQL语句来指定主键值,作为主键列的值。指定了要将自动生成的主键值赋给 id 属性;表示开启自动生成主键的功能,

机械工程跑路哥 4102

星空组网 vs 蒲公英 vs Tailscale:2024年国内免费异地组网工具横评(含实测数据)

本文对2024年国内主流免费异地组网工具星空组网、蒲公英和Tailscale进行了深度横向评测。基于实测数据,重点分析了三者在P2P成功率、中继延迟、传输速度及稳定性方面的表现,为中小企业、远程办公及个人开发者提供了清晰的选择指南。星空组网在国内网络环境下展现出优秀的平衡性。

weixin_29217235的博客 1447

Mybatis 获取自增主键

一、MySQL 获取自增主键 若数据库支持自动生成主键(比如 MySQL 和 SQL Server),则可以设置 useGeneratedKeys=“true”,表明使用自增主键获取主键值策略,然后再利用 keyProperty 属性指定对应的主键属性,也就是 Mybatis 获取到主键值后,将这个值封装给 JavaBean 的哪个属性。 <insert id="addEmp" databaseId="mysql" parameterType="employee" useGeneratedKeys="

dingd1234的博客 9756

微信小程序URL Link全解析:从生成原理到实战应用(附Java代码)

本文深入解析微信小程序URL Link的生成原理与实战应用。URL Link是微信官方提供的智能路由协议,通过中间页实现外部链接安全跳转至小程序指定页面。文章详细阐述了其权限模型、环境版本差异及跳转机制,并提供了包含令牌管理、异常处理和性能优化的健壮Java实现方案,助力开发者构建高可用的链接生成服务。

weixin_29327525的博客 1222

Reactor 响应式编程(第一篇:Reactor核心)

响应式:响应式编程: 全异步、消息、事件回调默认还是用当前线程,生成整个流、发布流、流操作.log();//只要不指定线程池,默认发布者用的线程就是订阅者的线程;

moments的博客 1573

mybatis中获取插入数组的主键值(自增主键,非增主键),mp

mybatis获取插入数据的主键

weixin_61503139的博客 1030

如何实现MCGS与S7-200SMART PLC以太网多台通信控制?

第九步:(设备工具箱—设备管理—鼠标依次点击通用TCP/IP父设备—西门子_ Smart200到设备窗口里面去)数据类型:第0位(指PLC地址变量小数点后面的位数,例如我地址是M0.0,那么在数据类型应填写通道的第00位)第十步:(鼠标双击打开通用TCPIP父设备0--[通用TCP/IP父设备]进入通信配置)通道地址:0(指小数点前面起始字节的地址,例如我地址是M0.0,那么应在通道地填写0)。第七步:(选择通用TCP/IP父设备,点击新增,右侧选定设备就会自动添加进去。

u010670857的博客 6720

Mybatis插入数据时,自动获取自增主键值

在平时开发中,可能会遇到数据库主键是自增的情况,这时我们保存数据时并不需要指定主键,可是很多时候都需要获取保存数据后生成的主键,怎么办呢? mybatis提供了两种方式获取数据库自增主键: 在insert标签中使用 useGeneratedKeys、keyProperty、keyColumn 属性获取; 在insert标签中嵌套 selectKey 标签获取。 下面使用小案例演示一下,这里使用的是MySQL数据库: 创建一张测试用的book表,建表语句如下: CREATE TABLE `book`

Coder-文小白的博客 4470

SD - WAN:企业出海的网络加速器

例如,一家中国的跨境电商企业,在欧美市场的促销活动期间,借助 SD - WAN 技术,即使面对海量订单数据的交互,也能确保欧美客户在浏览商品、下单支付时感受到近乎本地网络的流畅体验,大大提升了客户满意度,稳住了销售增速。企业无需在海外本地部署大量冗余服务器,只需依托云台,借助 SD - WAN 快速稳定的网络连接,即可轻松实现业务拓展,进一步精简运营架构,提升整体效能。在未来,随着技术的不断演进和企业出海需求的持续增长,SD - WAN 将持续赋能,助力更多企业在全球市场扬帆远航,书写辉煌篇章。

idcicp_com的博客 448

基于Simulink的永磁同步电机三闭环(位置/速度/电流)控制仿真

本文详细介绍了基于Simulink的永磁同步电机三闭环控制系统设计与实现方法。系统采用位置环、速度环、电流环的三层嵌套结构,通过坐标变换(Clark/Park)实现解耦控制,达到精密定位目的。文章包含完整的建模步骤:从主电路搭建、三环PID设计到坐标变换与SVPWM调制实现,并提供了核心控制算法的MATLAB代码。通过工业机械臂关节场景验证,系统在阶跃响应(稳态误差0.002°)、正弦跟踪(误差0.008°)和抗扰动性能(恢复时间0.05s)方面表现优异。最后还提出了前馈补偿、扰动观测器等优化方向。该方案适

xiaoheshang_123的博客 280

MyBatis:插入数据后如何获取自增长主键值

MyBatis:插入数据后如何获取自增长主键值 Mapper映射文件的示例如下: &lt;mapper namespace="userMapper"&gt; &lt;!--方式1 --&gt; &lt;insert id="addUser" parameterType="userScope" useGeneratedKeys="true" keyProperty=&quot

王小二(海阔天空) 2005

【论文精读】《Towards Deep Learning Models Resistant to Adversarial Attacks》

本文探讨了深度学习模型在面对对抗性攻击时的脆弱性,并提出了一种基于鲁棒优化的方法来增强神经网络的对抗鲁棒性。通过鞍点优化框架,作者提供了对抗攻击和防御机制的统一视角,并在MNIST和CIFAR-10数据集上验证了其方法的有效性。对抗训练的核心思想是将对抗样本引入训练过程,使模型能够学习到对抗样本的特征,从而提升其鲁棒性。本文通过鞍点优化框架提出了一种基于鲁棒优化的对抗训练方法,显著提升了深度学习模型的对抗鲁棒性。本文为深度学习模型的对抗鲁棒性研究提供了新的理论和实证支持,同时为未来研究指明了方向。

nmdbbzcl的博客 613

Mybatis获取刚刚插入的一条数据的主键值(插入时主键未制定数据库支持主键自增)...

为什么80%的码农都做不了架构师?>>> ...

weixin_33785972的博客 183

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Mybatis获取数据库自增主键

一般我们都为将表中主键列设置为自增,当我们执行插入语句时,比如这样 //测试添加 Employee employee = new Employee(null, "jerry4",null, "1"); mapper.addEmp(employee); System.out.println(employee.getId()); 那此时主键列我们进行`null值插入,插入后,如何能够获取自...

weixin_30719711的博客 134

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

老司机学习MyBatis之如何获取自增主键的值(MySQL)

使用MyBatis进行插入操作的时候,如果表的主键是自增的,针对不同的数据库相应的操作也不同。我们在实际开发中无非是两种情况比较多,一种是Oracle sequence,另外一种就是MySQL自增主键。本文主要应用于MySQL数据库,针对返回自增主键和不返回自增主键两种情况通过案例说明。

Java小蚂蚁 920

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

oracle批量插入并且返回自增主键_mybatis批量插入返回主键问题

今天整合mybatis时候用到返回主键问题,批量插入总是返回不了主键还报错。记录入下:pom版本:3.2.6mybatis.xml:insert into userinfo (UserName,UserPwd) values(#{item.username},#{item.userpwd})org.mybatis.spring.MyBatisSystemException: nested exce...

weixin_42365303的博客 1416

mybatis plus如何让id自增_mybatis plus 如何设置机器id和数据库id

匿名用户1级2018-06-13 回答mybatis自增主键配置:mybatis进行插入操作时,如果表的主键是自增的,针对不同的数据库相应的操作也不同。基本上经常会遇到的就是 Oracle Sequece 和 Mysql 自增主键。主要说明下在mybatis中对于自增主键的配置。1、不返回自增主键值:如果考虑到插入数据的主键不作为其他表插入数据的外键使用,可以考虑这种方式。Oracle Seque...

weixin_39607710的博客 1364

Mybatis- 使用数据库产生的主键

需求分析: 当数据库的主键使用自增主键的时候, 希望在通过 Mybatis 插入数据后, 能够获取到这个由数据库产生的主键. 自增主键示例代码: /** * 用户实体 */ public class User { private Integer id; private String name; // 省略其它代码 } /** * Mapper 接口...

javadaysdaysup的博客 199

Mybatis_设置主键自增后返回主键值

MySQL <!-- useGeneratedKeys="true" keyProperty 主键保存的属性名字 新增后主键 保存在了传入的 User对象的userId属性中了 --> <insert id="insert" parameterType="user" useGeneratedKeys="true" keyProperty="userId"> ...

Chill Lyn 376

Mybatis 在 insert 插入操作后返回主键 id

前提条件 假设我们这里有一个 Student 表,结构如下 sid name age 101 Jone 18 102 Jack 20 103 Tom 28 其中主键 sid 是自增的,那么我们插入数据时就不用插入 sid,它会生成一个自增的 sid。 问题提出 这里有一个问题,我们执行插入语句之后,并不能获取到生成的 sid。 StudentDao 接口中的 insert 方法 boolean insertStudent(Student student); StudentD

qq_44290077的博客 3万+

数据库主键ID自增,两种方法获取插入数据库那条数据自动生成的主键ID值

在开发过程中,我们可能会遇到这样的一种情况,我们保存一条数据。如果这条数据的主键ID是由用户决定的,这样我们在获取主键ID的时候,只需要让前端的同时传递给我们就可以了;如果主键ID设置为自增,是在用户新增数据操作时自动生成的,在后续业务逻辑中需要使用生成的主键ID值,我们又该如何获取呢?本篇我们就来说说两种常用方法获取自动生成的主键ID;

m0_70325779的博客 4563

通用mapper自增id mysql_mybatis 通用mapper.xml中 insert 方法不是自增主键怎么返回

展开全部方式1:SELECT @@IDENTITYinsert into Dic_City (City_Code, Provinces_Code,State_Code, City_Name, PY_Code,PY_Code_Short, Ext1, Ext2,Ext3, Ext4, Ext5)values (#{cityCode,jdbcType=VARCHAR}, #{provincesCode...

weixin_29070861的博客 510

mybatis中获取自增主键

mybatis提供了获取数据库自增主键: 在创建数据库时,需要先将ID这个设置为自增形式 如果未进行设置自增组件时,定义了自增的属性后,在插入一条数据后,后台控制输出的自增id会显示为0,不是为数据库中真正的id值,所以我们需要配置改组件,在后台输出的id为插入时的id值 1、通过useGeneratedKeys、keyProperty useGeneratedKeys、keyProperty属性,仅能在<insert>或者< update>元素中使用。作用分别如下所示.

weixin_42352733的博客 1575

mybatis:insert记录时获取自增主键的值

文章目录一、mybatis:获取自增主键的值背景:解决: 一、mybatis:获取自增主键的值 背景: 如果我们定义的数据库表设置了自增主键,然后通过mybatis向数据库插入一条记录时,我们可以不用给实体类的自增属性设置一个值。当插入数据后数据库会自动生成一个主键id,但是如果我们希望在java代码中获取到这个自动生成的主键id的值应该怎么做呢? 解决: 首先我们创建了如下一张员工表,其中id设置成为了自增主键。 此时,我们向员工表插入数据时,可以不用给pojo类的id属性设置值 @Te

xj784249429的博客 1119

mybatis插入语句执行后返回结果

keyProperty:指定将查询到的结果返回到parameterType所指的对象的对应属性中   order:指的是执行顺序,即为AFTER时,则在insert语句执行之后执行。   -->     SELECT LAST_INSERT_ID()     insert into user(userName, sex, address, birthday) values(#{us

我是IT小菜鸟的博客 1万+
下一篇: 【JSON】数据格式
fooagiph
博客等级 码龄16年 0粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值