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

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

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

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

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

代碼說(shuō)明:

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

問(wèn)題描述

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

異常如下:

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '4' for key 'PRIMARY'

問(wèn)題原因

BEFORE還是AFTER的問(wèn)題

<selectKey keyProperty="id" order="BEFORE" resultType="java.lang.Integer">
      SELECT LAST_INSERT_ID()
    </selectKey>

需要注意的是

Oracle使用before,MySQL使用after

生成帶代碼的時(shí)候可以通過(guò)identity="true"來(lái)指定生成的selectKey是before還是after

<generatedKey column="id" sqlStatement="Mysql" identity="true" />

注:

使用 useGeneratedKeys="true" keyProperty="id" 不存在該問(wèn)題。

mybatis generator生成實(shí)體時(shí)出現(xiàn)重復(fù)

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

解決方法

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指定庫(kù)名

總結(jié)

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

相關(guān)文章

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

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

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

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

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

    Springboot使用kafka的兩種方式

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

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

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

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

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

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

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

    解決SpringBoot中MultipartResolver和ServletFileUpload的沖突問(wèn)題

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

    Java實(shí)現(xiàn)在線五子棋對(duì)戰(zhàn)游戲(人機(jī)對(duì)戰(zhàn))

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

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

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

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

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

最新評(píng)論