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

Mybatis-Plus實現(xiàn)用戶ID自增出現(xiàn)的問題解決

 更新時間:2023年09月28日 11:26:00   作者:一條菜鳥魚  
項目基于 SpringBoot + MybatisPlus 3.5.2 使用數(shù)據(jù)庫自增ID時, 出現(xiàn)重復(fù)鍵的問題,本文就來介紹一下解決方法,感興趣的可以了解一下

問題描述

項目基于 SpringBoot + MybatisPlus 3.5.2 使用數(shù)據(jù)庫自增ID時, 出現(xiàn)重復(fù)鍵的問題。

自增ID介紹

1) 局部式配置

如下述代碼所示, 通過 @TableId 字段來指定自增字段, Value 為數(shù)據(jù)庫字段名(可以大寫), IdType 為自增類型。

public class User {
    @TableId(type = IdType.AUTO)
    //@TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    private String name;
    private Integer age;
}

2) 全局式配置

在 application.yaml 配置中配置 id-type: auto | 如果使用 SpringMVC 管理則在XML中配置即可, 會對所有 POJO 類配置自增。

mybatis-plus:
  configuration:
    map-underscore-to-camel-case: true
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  global-config:
    db-config:
      id-type: auto

問題

在使用 MybatisPlus 3.5.2 版本時, 會根據(jù)你配置的屬性來靈活的決定是否添加主鍵 id 作為插入條件, 執(zhí)行語句如下:

==>  Preparing: INSERT INTO news (id, title, content, time ) VALUES ( ?, ?, ? )
==> Parameters: 2(int), 3(String), 333(String), 2023-07-20 18:38:53.0(Timestamp)

這是因為我在前端使用了 hidden 類型的 input 框作為id的替代值, 這時由于主鍵沖突就會報錯。

<input type="hidden" name="id" value="2" class="layui-input">

解決方案

Stage1 - 方案一

這時我將前端的 hidden 框刪去, 依舊沒有解決問題, 它還是會在 .save() 方法調(diào)用 Object.getId() 時報 null 異常, 也即直接使用 save 方法時不可行的。這是可以考慮作以下處理:

  • 配置 MybatisPlus 在 save 方法也即 insert 語句執(zhí)行時忽略 id 的獲取
  • Override .save 方法
  • 使用 nanoid + 雪花算法 自動生成id并賦值

Stage2 - 方案二

在我之前的項目使用中, 使用 hidden 類型的 input 框作為id的替代值并save的方案是可以使用的, 但是在 MybatisPlus 3.5.2 版本中沒法使用, 之前的版本為 MybatisPlus 3.4.2, 也許是更新修改了底層邏輯, 所以后面我進(jìn)行了回退。

到此這篇關(guān)于Mybatis-Plus實現(xiàn)用戶ID自增出現(xiàn)的問題解決的文章就介紹到這了,更多相關(guān)Mybatis-Plus ID自增內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • spring cloud gateway集成hystrix實戰(zhàn)篇

    spring cloud gateway集成hystrix實戰(zhàn)篇

    這篇文章主要介紹了spring cloud gateway集成hystrix實戰(zhàn),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • java判斷各類型字符個數(shù)實例代碼

    java判斷各類型字符個數(shù)實例代碼

    大家好,本篇文章主要講的是java判斷各類型字符個數(shù)實例代碼,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Mybatis插入數(shù)據(jù)后自增id獲取方式

    Mybatis插入數(shù)據(jù)后自增id獲取方式

    在MyBatis中,獲取自增主鍵可以通過useGeneratedKeys屬性或selectKey節(jié)點實現(xiàn),useGeneratedKeys設(shè)置時,需設(shè)置keyProperty指定主鍵字段,數(shù)據(jù)庫表也要相應(yīng)設(shè)置,selectKey節(jié)點可在插入操作后,通過特定SQL查詢獲得主鍵
    2024-09-09
  • Java線程Timer定時器用法詳細(xì)總結(jié)

    Java線程Timer定時器用法詳細(xì)總結(jié)

    在本篇文章里小編給大家整理的是關(guān)于Java線程Timer定時器用法詳細(xì)總結(jié)內(nèi)容,需要的朋友們學(xué)習(xí)下吧。
    2020-02-02
  • SpringBoot集成cache緩存的實現(xiàn)

    SpringBoot集成cache緩存的實現(xiàn)

    日常開發(fā)中,緩存是解決數(shù)據(jù)庫壓力的一種方案,本文記錄springboot中使用cache緩存。需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06
  • 部署Nacos的源碼環(huán)境搭建過程

    部署Nacos的源碼環(huán)境搭建過程

    這篇文章主要為大家介紹了部署Nacos的源碼環(huán)境搭建過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • JAVA得到數(shù)組中最大值和最小值的簡單實例

    JAVA得到數(shù)組中最大值和最小值的簡單實例

    這篇文章主要介紹了JAVA得到數(shù)組中最大值和最小值的簡單實例,需要的朋友可以參考下
    2014-08-08
  • Java編程實現(xiàn)月食簡單代碼分享

    Java編程實現(xiàn)月食簡單代碼分享

    這篇文章主要介紹了Java編程實現(xiàn)月食簡單代碼分享,程序很簡單,喜歡的朋友可以拿過去玩玩。
    2017-11-11
  • 探索Java分布式限流技術(shù)

    探索Java分布式限流技術(shù)

    探索Java分布式限流技術(shù),讓你的系統(tǒng)遠(yuǎn)離流量過載的煩惱,本指南將帶你了解如何使用Java實現(xiàn)高效的限流策略,幫助你輕松應(yīng)對高并發(fā)場景,讓我們一起開啟這段精彩的技術(shù)之旅,打造更加穩(wěn)定可靠的系統(tǒng),需要的朋友可以參考下
    2024-03-03
  • 使用gRPC微服務(wù)的內(nèi)部通信優(yōu)化

    使用gRPC微服務(wù)的內(nèi)部通信優(yōu)化

    這篇文章主要為大家介紹了微服務(wù)優(yōu)化之使用gRPC做微服務(wù)的內(nèi)部通信,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03

最新評論