mybatis LAST_INSERT_ID

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
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'

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

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
SQL Java 数据库连接
16MyBatis - MyBatis根据id查询
16MyBatis - MyBatis根据id查询
71 0
|
1月前
|
SQL Java 数据库连接
Mybatis的<insert>,<update>,<delete>标签用法
这篇文章详细讲解了Mybatis中<insert>, <update>, <delete>标签的使用方法,并提供了示例代码来展示如何执行数据库的增删改操作。
20 0
|
2月前
|
SQL XML Java
mybatis :sqlmapconfig.xml配置 ++++Mapper XML 文件(sql/insert/delete/update/select)(增删改查)用法
当然,这些仅是MyBatis功能的初步介绍。MyBatis还提供了高级特性,如动态SQL、类型处理器、插件等,可以进一步提供对数据库交互的强大支持和灵活性。希望上述内容对您理解MyBatis的基本操作有所帮助。在实际使用中,您可能还需要根据具体的业务要求调整和优化SQL语句和配置。
44 1
|
6月前
|
Java 关系型数据库 MySQL
Mybatis和Mybatis-Plus执行插入语句后可以返回主键ID吗?
Mybatis和Mybatis-Plus执行插入语句后可以返回主键ID吗?
367 0
|
Java 数据库连接 mybatis
mybatis获取insert后的主键id
主要是添加:useGeneratedKeys="true" keyProperty="id" keyColumn="id"。
149 0
|
测试技术
MyBatis-09MyBatis注解方式之@Update/@Delete
MyBatis-09MyBatis注解方式之@Update/@Delete
110 0
|
XML SQL Java
MyBatis-05 MyBatis XML方式之update/delete元素
MyBatis-05 MyBatis XML方式之update/delete元素
153 0
|
数据库
使用tk.mybatis中的注意事项--insert添加不上+没有selectByExample
自己在使用tk.mybatis,遇到了这两个问题,在这里分享给大家: 第一个使用insert语句,插入到数据库是为空: 解决方案:就是实体类的字段类型都要是包装类
264 2
|
关系型数据库 Java 数据库连接
MyBatis获取新增数据ID的几种方法
MyBatis获取新增数据ID的几种方法
3430 0
|
Java 数据库连接 mybatis
mybatis学习(27):获取自增id方式一(在mapper中insert配置节点的属性)
mybatis学习(27):获取自增id方式一(在mapper中insert配置节点的属性)
192 0
mybatis学习(27):获取自增id方式一(在mapper中insert配置节点的属性)