mybatis LAST_INSERT_ID

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

我们知道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

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
5月前
|
Java 数据库连接 mybatis
mybatis的set标签
mybatis的set标签
|
6月前
|
SQL Java 数据库连接
16MyBatis - MyBatis根据id查询
16MyBatis - MyBatis根据id查询
30 0
|
3月前
|
Java 关系型数据库 MySQL
Mybatis和Mybatis-Plus执行插入语句后可以返回主键ID吗?
Mybatis和Mybatis-Plus执行插入语句后可以返回主键ID吗?
56 0
|
9月前
|
Java 数据库连接 mybatis
mybatis获取insert后的主键id
主要是添加:useGeneratedKeys="true" keyProperty="id" keyColumn="id"。
99 0
|
11月前
|
测试技术
MyBatis-09MyBatis注解方式之@Update/@Delete
MyBatis-09MyBatis注解方式之@Update/@Delete
86 0
|
11月前
|
XML SQL Java
MyBatis-05 MyBatis XML方式之update/delete元素
MyBatis-05 MyBatis XML方式之update/delete元素
109 0
|
SQL Oracle 关系型数据库
MyBatis获取新增数据ID的几种方法
MyBatis获取新增数据ID的几种方法
3204 0
|
数据库
使用tk.mybatis中的注意事项--insert添加不上+没有selectByExample
自己在使用tk.mybatis,遇到了这两个问题,在这里分享给大家: 第一个使用insert语句,插入到数据库是为空: 解决方案:就是实体类的字段类型都要是包装类
137 2
|
XML SQL 设计模式
Mybatis 中 .xml 文件定义 <select|insert|update|delete> 语句如何解析
Mybatis 中 .xml 文件定义 <select|insert|update|delete> 语句如何解析
221 0
Mybatis 中 .xml 文件定义 <select|insert|update|delete> 语句如何解析
|
Java 数据库连接 mybatis
mybatis学习(27):获取自增id方式一(在mapper中insert配置节点的属性)
mybatis学习(27):获取自增id方式一(在mapper中insert配置节点的属性)
164 0
mybatis学习(27):获取自增id方式一(在mapper中insert配置节点的属性)