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

快速解決 MyBatis-Plus 中 ID 自增問題(推薦)

 更新時間:2025年02月07日 14:37:52   作者:迷迷的k  
本文介紹了MyBatis-Plus中自動生成ID過長導致的問題及解決方法,結(jié)合示例代碼給大家介紹的非常詳細,感興趣的朋友一起看看吧

MyBatis-Plus 中自動生成的 ID 過長,可能導致以下問題的出現(xiàn):

  • 由于屬性的 ID 是由 mp 內(nèi)部的 UUID 生成,比如使用 Integer類型 將存不進去
  • 當后端傳入 mp 雪花算法自動生成的 ID 時,前端接收的時候可能會導致精度的損失

問題一:由于屬性的 ID 是由 mp 內(nèi)部的 UUID 生成,比如使用 Integer類型 將存不進去

報錯信息如下所示:

ested exception is org.apache.ibatis.reflection.ReflectionException: Could not set property 'id' of 'class com.xxx' with value '111042370348747XXXX Cause: java.lang.IllegalArgumentException: java.lang.ClassCastException@14041406

解決方法:

將 ID 字段類型改為 long,這樣就能保證有足夠位數(shù)放入生成的 ID

問題二:當后端傳入 mp 雪花算法自動生成的 ID 時,前端接收的時候可能會導致精度的損失

解決方法:

第一步:

首先在對應的類的主鍵屬性上,增加以下代碼配置

@TableId(value = "id",type = IdType.AUTO)
    private Long id;

type 屬性中,其他類型如下: 

AUTO:AUTO(0, “數(shù)據(jù)庫ID自增”),

INPUT:INPUT(1, “用戶輸入ID”),

ID_WORKER:ID_WORKER(2, “全局唯一ID”),

UUID:UUID(3, “全局唯一ID”),

NONE:NONE(4, “該類型為未設置主鍵類型”),

ID_WORKER_STR:ID_WORKER_STR(5, “字符串全局唯一ID”);

這里的 @TableId 注解需要添加以下依賴:

這里的版本號最好與 mp 的主依賴的版本保持一致

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>版本號</version>
</dependency>

第二步:

將之前的被自增長的ID數(shù)據(jù)刪除

第三步:

在需要解決 mp 自增長的表中,執(zhí)行以下語句

ALTER TABLE table_name AUTO_INCREMENT = value;
 

其中, table_name 是對應的表名,value 是你需要進行自增的 ID 值

比如:value 賦值為 2,則 mp 下次生成的 ID 則為2,即從 2 開始

自增主鍵與 UUID 的優(yōu)缺點

自增主鍵:

這種方式是使用數(shù)據(jù)庫提供的自增數(shù)值型字段作為自增主鍵

優(yōu)點:

  • 數(shù)據(jù)庫自動編號,速度快,而且是增量增長,按順序存放,對于檢索非常有利
  • 數(shù)字型,占用空間小,易排序,在程序中傳遞也方便
  • 如果通過非系統(tǒng)增加記錄時,可以不用指定該字段,不用擔心主鍵重復問題

缺點 :

  • 因為自動增長,在手動要插入指定ID的記錄時會顯得麻煩,尤其是當系統(tǒng)與其它系統(tǒng)集成時,需要數(shù)據(jù)導入時,很難保證原系統(tǒng)的ID不發(fā)生主鍵沖突(前提是老系統(tǒng)也是數(shù)字型的)
  • 如果經(jīng)常有合并表的操作,就可能會出現(xiàn)主鍵重復的情況很難處理分布式存儲的數(shù)據(jù)表
  • 數(shù)據(jù)量特別大時,會導致查詢數(shù)據(jù)庫操作變慢;此時需要進行數(shù)據(jù)庫的水平拆分,劃分到不同的數(shù)據(jù)庫中,那么當添加數(shù)據(jù)時,每個表都會自增長,導致主鍵沖突

UUID:

優(yōu)點:

能夠保證獨立性,程序可以在不同的數(shù)據(jù)庫間遷移,效果不受影響;保證生成的ID不僅是表獨立的,而且是庫獨立的,這點在你想切分數(shù)據(jù)庫的時候尤為重要

缺點:

  • 比較占地方,和INT類型相比,存儲一個UUID要花費更多的空間
  • 使用UUID后,URL顯得冗長,不夠友好
  • Join 操作性能比 int 要低
  • UUID做主鍵將會添加到表上的其他索引中,因此會降低性能

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

相關文章

  • Java實現(xiàn)為Word文檔添加文檔屬性

    Java實現(xiàn)為Word文檔添加文檔屬性

    Word文檔的文檔屬性是一組用于描述文件本身及其內(nèi)容的元數(shù)據(jù),本文以客觀方式介紹如何在Java項目中為Word文檔添加文檔屬性,包含環(huán)境準備、代碼示例和注意事項,適合開發(fā)者快速上手
    2026-03-03
  • 選擇java的理由:java之父訪談實錄

    選擇java的理由:java之父訪談實錄

    選擇java的理由:java之父訪談實錄...
    2006-12-12
  • 關于jar包增量更新分析

    關于jar包增量更新分析

    這篇文章主要介紹了關于jar包增量更新分析,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • LeetCode程序員面試題之無重復字符的最長子串

    LeetCode程序員面試題之無重復字符的最長子串

    Java計算無重復字符的最長子串是一種常見的字符串處理算法,它的目的是找出一個字符串中無重復字符的最長子串。該算法可以很好地解決一些字符串處理問題,比如尋找字符串中重復字符的位置,以及計算字符串中無重復字符的最長子串的長度。
    2023-02-02
  • Servlet文件的上傳與下載詳解

    Servlet文件的上傳與下載詳解

    很多朋友不清楚在Servlet中怎么上傳下載文件,談到這個問題,首先需要我們掌握開發(fā)servlet的步驟,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2022-06-06
  • 常用Maven庫,鏡像庫及maven/gradle配置(小結(jié))

    常用Maven庫,鏡像庫及maven/gradle配置(小結(jié))

    這篇文章主要介紹了常用Maven庫,鏡像庫及maven/gradle配置(小結(jié)),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • Spring Boot JDBC 連接數(shù)據(jù)庫示例

    Spring Boot JDBC 連接數(shù)據(jù)庫示例

    本篇文章主要介紹了Spring Boot JDBC 連接數(shù)據(jù)庫示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • SpringCloud zookeeper作為注冊中心使用介紹

    SpringCloud zookeeper作為注冊中心使用介紹

    ZooKeeper由雅虎研究院開發(fā),是Google Chubby的開源實現(xiàn),后來托管到Apache,于2010年11月正式成為Apache的頂級項目。ZooKeeper是一個經(jīng)典的分布式數(shù)據(jù)一致性解決方案,致力于為分布式應用提供一個高性能、高可用,且具有嚴格順序訪問控制能力的分布式協(xié)調(diào)服務
    2022-11-11
  • Springboot中使用Filter實現(xiàn)Header認證詳解

    Springboot中使用Filter實現(xiàn)Header認證詳解

    這篇文章主要介紹了Springboot中使用Filter實現(xiàn)Header認證詳解,當在?web.xml?注冊了一個?Filter?來對某個?Servlet?程序進行攔截處理時,它可以決定是否將請求繼續(xù)傳遞給?Servlet?程序,以及對請求和響應消息是否進行修改,需要的朋友可以參考下
    2023-08-08
  • SpringBoot實現(xiàn)接口加密的五大技巧分享

    SpringBoot實現(xiàn)接口加密的五大技巧分享

    為了有效應對接口安全面臨的挑戰(zhàn),接口加密作為一種至關重要的手段,能夠?qū)⒃紨?shù)據(jù)轉(zhuǎn)化為密文進行傳輸,從而確保數(shù)據(jù)在傳輸過程中的機密性和完整性,本文將深入探討SpringBoot接口加密的最佳實踐,需要的朋友可以參考下
    2025-07-07

最新評論

望谟县| 莱芜市| 微山县| 马尔康县| 宝山区| 若尔盖县| 定襄县| 孝感市| 曲阜市| 甘洛县| 兴安盟| 河曲县| 呼和浩特市| 台湾省| 永顺县| 佛教| 淮安市| 集安市| 屏南县| 南丰县| 林甸县| 玉林市| 兴隆县| 黄陵县| 保康县| 梨树县| 和田市| 平凉市| 平罗县| 东光县| 紫云| 安庆市| 天峨县| 云梦县| 游戏| 菏泽市| 郧西县| 曲靖市| 宜城市| 辽宁省| 丰都县|