mybatis LAST_INSERT_ID

  1. 云栖社区>
  2. 博客>
  3. 正文

mybatis LAST_INSERT_ID

sscma 2018-02-12 11:36:51 浏览1057
展开阅读全文

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

网友评论

登录后评论
0/500
评论
sscma
+ 关注