解决mybatis generator MySQL自增ID出现重复问题MySQLIntegrityConstraintViolationException
mybatis generator MySQL自增ID出现重复问题
PS:有时候不注意可能导致该问题,此处只做记录,以供参考。
代码说明:
数据库是MySQL,用generator 生成的mapper.xml中的代码,自增ID,使用的是selectKey来获取。
问题描述
insert的时候,添加的时候,第一条数据添加成功,接着添加第二条数据的时候会提示失败,失败的原因是ID还是使用的上一个ID值,主键重复导致插入失败。
异常如下:
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '4' for key 'PRIMARY'
问题原因
BEFORE还是AFTER的问题
<selectKey keyProperty="id" order="BEFORE" resultType="java.lang.Integer">
SELECT LAST_INSERT_ID()
</selectKey>需要注意的是
Oracle使用before,MySQL使用after
生成带代码的时候可以通过identity="true"来指定生成的selectKey是before还是after
<generatedKey column="id" sqlStatement="Mysql" identity="true" />
注:
使用 useGeneratedKeys="true" keyProperty="id" 不存在该问题。
mybatis generator生成实体时出现重复
java项目 中使用 org.mybatis.generator生成mysql数据库实体时,由于mysql 数据库中存在多个库,如果库中出现重复表时,会出现生成的实体代码出现重复问题,原因是数据库生成实体时会扫描所有的库,
解决方法
1、第一种
jdbc:mysql://localhost:3306/table?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&nullCatalogMeansCurrent=true
在连接串中加入nullCatalogMeansCurrent=true就行了
2、第二种方式是设置
<table tableName="table" catalog="dataName"></table>
使用catalog指定库名
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
- 解决Mybatis报错:org.apache.ibatis.reflection.ReflectionException: There is no getter for property named问题
- MyBatis嵌套查询collection报错:org.apache.ibatis.exceptions.TooManyResultsException
- 解决springboot3:mybatis-plus依赖错误:org.springframework.beans.factory.UnsatisfiedDependencyException
- 解决Mybatis出现报错Error querying database.Cause: java.lang.IndexOutOfBoundsException: Index 9 out of
- 解决mybatis plus报错com.microsoft.sqlserver.jdbc.SQLServerException:必须执行该语句才能获得结果
- 关于MyBatisSystemException异常产生的原因及解决过程
相关文章
SpringBoot配置mybatis驼峰命名规则自动转换的实现
这篇文章主要介绍了SpringBoot配置mybatis驼峰命名规则自动转换的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-09-09
利用Spring Social轻松搞定微信授权登录的方法示例
这篇文章主要介绍了利用Spring Social轻松搞定微信授权登录的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-12-12
MyBatis中关于resultType和resultMap的区别介绍
MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,那么MyBatis中关于resultType和resultMap的区别是什么呢?下面小编通过本文给大家解答下2016-09-09
解决SpringBoot中MultipartResolver和ServletFileUpload的冲突问题
这篇文章主要介绍了解决SpringBoot中MultipartResolver和ServletFileUpload的冲突问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-10-10


最新评论