mybatis LAST_INSERT_ID

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

我们知道mybatis有个LAST_INSERT_ID函数,用来返回insert的sql语句操作后返回结果集id
1、正常情况下,如果数据库是自增id,我们不用设置id,即id字段为null,然后返回的数据库最后记录(包括已删除的记录)的id+1
2、如果我们人为的设置insert中的id,则会出现如下3中情况
(1)插入的id在数据库中已经存在该id的记录,则直接插入失败,抛出如下异常

org.springframework.dao.DuplicateKeyException: 
### Error updating database.  Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '30001' for key 'PRIMARY'
### The error may involve com.alibaba.campus.workbench.dao.BizLogMapper.insert-Inline
### The error occurred while setting parameters
### SQL: SQL内容省略……
### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '30001' for key 'PRIMARY'
; SQL []; Duplicate entry '30001' for key 'PRIMARY'; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '30001' for key 'PRIMARY'
AI 代码解读

(2)插入的id在数据库中已经存在该id的记录,但是该条记录已经被删除了,则插入成功,但是结果对象中的id为0
(3)插入的id在数据中不存在该id的记录,则插入成功,但是结果对象中的id为0

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
sscma
+关注
目录
打赏
0
0
0
0
1
分享
相关文章
Mybatis的<insert>,<update>,<delete>标签用法
这篇文章详细讲解了Mybatis中<insert>, <update>, <delete>标签的使用方法,并提供了示例代码来展示如何执行数据库的增删改操作。
472 0
|
7月前
|
mybatis :sqlmapconfig.xml配置 ++++Mapper XML 文件(sql/insert/delete/update/select)(增删改查)用法
当然,这些仅是MyBatis功能的初步介绍。MyBatis还提供了高级特性,如动态SQL、类型处理器、插件等,可以进一步提供对数据库交互的强大支持和灵活性。希望上述内容对您理解MyBatis的基本操作有所帮助。在实际使用中,您可能还需要根据具体的业务要求调整和优化SQL语句和配置。
111 1
mybatis-plus报错:Can not find table primary key in Class
mybatis-plus报错:Can not find table primary key in Class
1852 1
Mybatis和Mybatis-Plus执行插入语句后可以返回主键ID吗?
Mybatis和Mybatis-Plus执行插入语句后可以返回主键ID吗?
592 0
mybatis获取insert后的主键id
主要是添加:useGeneratedKeys="true" keyProperty="id" keyColumn="id"。
186 0
Mybatis 中 .xml 文件定义 <select|insert|update|delete> 语句如何解析
Mybatis 中 .xml 文件定义 <select|insert|update|delete> 语句如何解析
326 0
Mybatis 中 .xml 文件定义 <select|insert|update|delete> 语句如何解析
mybatis学习(27):获取自增id方式一(在mapper中insert配置节点的属性)
mybatis学习(27):获取自增id方式一(在mapper中insert配置节点的属性)
257 0
mybatis学习(27):获取自增id方式一(在mapper中insert配置节点的属性)
MyBatis插入数据后返回主键id
最近开发全栈项目时,前端有个数据行可以被随便修改,所以必须给他一个标识记录该数据行,即向MySQL数据库中插入一条记录后,需要获取此条记录的主键id值返回给前端。
203 0