欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決mybatis generator MySQL自增ID出現(xiàn)重復(fù)問題MySQLIntegrityConstraintViolationException

 更新時間:2024年10月17日 08:41:47   作者:lzh_me  
在MySQL中使用MyBatis時,可能會遇到由于主鍵重復(fù)導(dǎo)致的插入失敗問題,此問題通常發(fā)生在連續(xù)插入多條數(shù)據(jù)時,如果selectKey的order配置錯誤,如使用BEFORE而不是AFTER,將會導(dǎo)致獲取的ID未更新,引起主鍵重復(fù)錯誤,正確的配置應(yīng)使用AFTER

mybatis generator MySQL自增ID出現(xiàn)重復(fù)問題

PS:有時候不注意可能導(dǎo)致該問題,此處只做記錄,以供參考。

代碼說明:

數(shù)據(jù)庫是MySQL,用generator 生成的mapper.xml中的代碼,自增ID,使用的是selectKey來獲取。

問題描述

insert的時候,添加的時候,第一條數(shù)據(jù)添加成功,接著添加第二條數(shù)據(jù)的時候會提示失敗,失敗的原因是ID還是使用的上一個ID值,主鍵重復(fù)導(dǎo)致插入失敗。

異常如下:

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生成實體時出現(xiàn)重復(fù)

java項目 中使用 org.mybatis.generator生成mysql數(shù)據(jù)庫實體時,由于mysql 數(shù)據(jù)庫中存在多個庫,如果庫中出現(xiàn)重復(fù)表時,會出現(xiàn)生成的實體代碼出現(xiàn)重復(fù)問題,原因是數(shù)據(jù)庫生成實體時會掃描所有的庫,

解決方法

1、第一種

jdbc:mysql://localhost:3306/table?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&nullCatalogMeansCurrent=true

在連接串中加入nullCatalogMeansCurrent=true就行了

2、第二種方式是設(shè)置

<table tableName="table" catalog="dataName"></table> 

使用catalog指定庫名

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • springboot整合vue實現(xiàn)上傳下載文件

    springboot整合vue實現(xiàn)上傳下載文件

    這篇文章主要為大家詳細(xì)介紹了springboot整合vue實現(xiàn)上傳下載文件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • SpringBoot配置mybatis駝峰命名規(guī)則自動轉(zhuǎn)換的實現(xiàn)

    SpringBoot配置mybatis駝峰命名規(guī)則自動轉(zhuǎn)換的實現(xiàn)

    這篇文章主要介紹了SpringBoot配置mybatis駝峰命名規(guī)則自動轉(zhuǎn)換的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Springboot使用kafka的兩種方式

    Springboot使用kafka的兩種方式

    在公司用kafka比較多,今天整理下Springboot使用kafka的兩種方式,Kafka作為一個消息發(fā)布訂閱系統(tǒng),就包括消息生成者和消息消費者,文中通過代碼示例介紹的非常詳細(xì),具有一定的參考價值,需要的朋友可以參考下
    2023-11-11
  • Java 調(diào)用天氣Webservice詳解及實例代碼

    Java 調(diào)用天氣Webservice詳解及實例代碼

    這篇文章主要介紹了Java 調(diào)用天氣Webservice詳解及實例代碼的相關(guān)資料,這里附實例代碼,使用java 調(diào)用webservice 的小應(yīng)用,需要的朋友可以參考下
    2016-11-11
  • 利用Spring Social輕松搞定微信授權(quán)登錄的方法示例

    利用Spring Social輕松搞定微信授權(quán)登錄的方法示例

    這篇文章主要介紹了利用Spring Social輕松搞定微信授權(quán)登錄的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • MyBatis中關(guān)于resultType和resultMap的區(qū)別介紹

    MyBatis中關(guān)于resultType和resultMap的區(qū)別介紹

    MyBatis中在查詢進行select映射的時候,返回類型可以用resultType,也可以用resultMap,那么MyBatis中關(guān)于resultType和resultMap的區(qū)別是什么呢?下面小編通過本文給大家解答下
    2016-09-09
  • 解決SpringBoot中MultipartResolver和ServletFileUpload的沖突問題

    解決SpringBoot中MultipartResolver和ServletFileUpload的沖突問題

    這篇文章主要介紹了解決SpringBoot中MultipartResolver和ServletFileUpload的沖突問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java實現(xiàn)在線五子棋對戰(zhàn)游戲(人機對戰(zhàn))

    Java實現(xiàn)在線五子棋對戰(zhàn)游戲(人機對戰(zhàn))

    這篇文章主要為大家詳細(xì)介紹了如何利用Java語言實現(xiàn)在線五子棋對戰(zhàn)游戲(人機對戰(zhàn)),文中的實現(xiàn)步驟講解詳細(xì),感興趣的可以嘗試一下
    2022-09-09
  • SpringBoot?讀取yml文件的多種方式匯總

    SpringBoot?讀取yml文件的多種方式匯總

    這篇文章主要介紹了SpringBoot讀取yml文件的幾種方式,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • Java線程啟動為什么要用start()而不是run()?

    Java線程啟動為什么要用start()而不是run()?

    這篇文章主要介紹了線程啟動為什么要用start()而不是run()?下面文章圍繞start()與run()的相關(guān)資料展開詳細(xì)內(nèi)容,具有一定的參考價值,西藥的小火熬版可以參考一下,希望對你有所幫助
    2021-12-12

最新評論