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指定库名
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论