在insert sql语句中使用SELECT LAST_INSERT_ID() 未实现主键自增
<insert id="insert" parameterType="springbootdemo.demo.pojo.Contact" >
<selectKey resultType="java.lang.Integer" keyProperty="id" order="BEFORE" >
SELECT LAST_INSERT_ID()
</selectKey>
insert into contact (id, fileId, fileName,
version)
values (#{id,jdbcType=INTEGER}, #{fileId,jdbcType=VARCHAR}, #{fileName,jdbcType=VARCHAR},
#{version,jdbcType=VARCHAR})
</insert>
mybatis-generator 自动生成的映射文件
SELECT LAST_INSERT_ID():得到刚 insert 进去记录的主键值,只适用与自增主键。
也就是说这句代码可以获取插入的新数据的自增主键ID,并在下面的insert语句中将查到的id赋值进去。
但是,如果我连续调用这条insert sql,就会报java.sql.SQLIntegrityConstraintViolationException主键重复的异常。因为在第一次之后的insert调用的依然是同一个id,只有重启项目调用才会继续自增。将这句代码删除之后,连续调用insert接口,即可实现主键的连续自增。