最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

問題描述

項(xiàng)目基于 SpringBoot + MybatisPlus 3.5.2 使用數(shù)據(jù)庫自增ID時(shí), 出現(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 版本時(shí), 會根據(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)

這是因?yàn)槲以谇岸耸褂昧?nbsp;hidden 類型的 input 框作為id的替代值, 這時(shí)由于主鍵沖突就會報(bào)錯(cuò)。

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

解決方案

Stage1 - 方案一

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

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

Stage2 - 方案二

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

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

相關(guān)文章

  • 關(guān)于Java應(yīng)用日志與Jaeger的trace關(guān)聯(lián)的問題

    關(guān)于Java應(yīng)用日志與Jaeger的trace關(guān)聯(lián)的問題

    這篇文章主要介紹了Java應(yīng)用日志如何與Jaeger的trace關(guān)聯(lián),通過jaeger發(fā)現(xiàn)這十次請求中有一次耗時(shí)特別長,想定位一下具體原因,感興趣的朋友跟隨小編一起看看吧
    2022-01-01
  • java多線程入門知識及示例程序

    java多線程入門知識及示例程序

    java多線程入門知識及示例程序,大家參考使用吧
    2013-12-12
  • 利用Springboot+Caffeine實(shí)現(xiàn)本地緩存實(shí)例代碼

    利用Springboot+Caffeine實(shí)現(xiàn)本地緩存實(shí)例代碼

    Caffeine是一個(gè)基于Java8開發(fā)的提供了近乎最佳命中率的高性能的緩存庫,下面這篇文章主要給大家介紹了關(guān)于利用Springboot+Caffeine實(shí)現(xiàn)本地緩存的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • 從?PageHelper?到?MyBatis?Plugin執(zhí)行概要及實(shí)現(xiàn)原理

    從?PageHelper?到?MyBatis?Plugin執(zhí)行概要及實(shí)現(xiàn)原理

    這篇文章主要為大家介紹了從?PageHelper?到?MyBatis?Plugin執(zhí)行概要及實(shí)現(xiàn)原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • 關(guān)于springboot 配置文件中屬性變量引用方式@@解析

    關(guān)于springboot 配置文件中屬性變量引用方式@@解析

    這篇文章主要介紹了關(guān)于springboot 配置文件中屬性變量引用方式@@解析,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • 使用mockito編寫測試用例教程

    使用mockito編寫測試用例教程

    這篇文章主要為大家介紹了使用mockito編寫測試用例教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • 簡單了解Java編程中拋出異常的方法

    簡單了解Java編程中拋出異常的方法

    這篇文章主要介紹了Java編程中拋出異常的方法,是Java入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-11-11
  • java中Websocket的使用方法例子

    java中Websocket的使用方法例子

    這篇文章主要給大家介紹了關(guān)于java中Websocket的使用方法,WebSocket是HTML5開始提供的一種在瀏覽器和服務(wù)器間進(jìn)行全雙工通信的協(xié)議,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • 淺談為什么同一個(gè)java文件只能有一個(gè)public類

    淺談為什么同一個(gè)java文件只能有一個(gè)public類

    這篇文章主要介紹了淺談為什么同一個(gè)java文件只能有一個(gè)public類,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Java中使用Lambda表達(dá)式和函數(shù)編程示例

    Java中使用Lambda表達(dá)式和函數(shù)編程示例

    這篇文章介紹了Java中使用Lambda表達(dá)式和函數(shù)編程示例,該文章會演示多個(gè)示列,分別是變量聲明上下文中的lambda、return語句上下文中的lambda、賦值上下文中的lambda、lambda在數(shù)組初始值設(shè)定項(xiàng)上下文中的用法等等,需要的朋友可以參考一下
    2021-10-10

最新評論

江油市| 尼勒克县| 泾阳县| 涡阳县| 德兴市| 阆中市| 尼木县| 九龙坡区| 乐陵市| 三门县| 山阴县| 三都| 塔城市| 阳春市| 穆棱市| 玛曲县| 汝阳县| 涞源县| 新龙县| 四平市| 北海市| 汾阳市| 康定县| 丽水市| 灵台县| 磐安县| 双桥区| 东乡| 宣城市| 渝中区| 铅山县| 昆明市| 牡丹江市| 韩城市| 武清区| 大田县| 新丰县| 错那县| 安新县| 库伦旗| 奉化市|