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

Mybatis-Plus實(shí)現(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實(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)這十次請求中有一次耗時特別長,想定位一下具體原因,感興趣的朋友跟隨小編一起看看吧
    2022-01-01
  • java多線程入門知識及示例程序

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

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

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

    Caffeine是一個基于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 配置文件中屬性變量引用方式@@解析,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    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
  • 淺談為什么同一個java文件只能有一個public類

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

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

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

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

最新評論

亳州市| 青铜峡市| 万盛区| 肇庆市| 彭山县| 日喀则市| 慈溪市| 南宫市| 科技| 隆尧县| 石泉县| 新乡市| 鄢陵县| 五峰| 灵川县| 台州市| 呼图壁县| 嘉黎县| 芦溪县| 岫岩| 双峰县| 抚州市| 外汇| 通化市| 焉耆| 四子王旗| 灵山县| 收藏| 扶沟县| 万山特区| 汶川县| 双辽市| 宁化县| 伊金霍洛旗| 西峡县| 康乐县| 无锡市| 德化县| 灌南县| 通道| 金川县|