当前位置: 代码网 > it编程>编程语言>Java > 解决mybatis generator MySQL自增ID出现重复问题MySQLIntegrityConstraintViolationException

解决mybatis generator MySQL自增ID出现重复问题MySQLIntegrityConstraintViolationException

2024年10月27日 Java 我要评论
mybatis generator mysql自增id出现重复问题ps:有时候不注意可能导致该问题,此处只做记录,以供参考。代码说明:数据库是mysql,用generator 生成的mapper.xm

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指定库名

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com