溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

使用mybatis-plus生成 id主鍵時會遇到哪些問題

發(fā)布時間:2020-11-06 16:54:46 來源:億速云 閱讀:391 作者:Leah 欄目:開發(fā)技術(shù)

這篇文章運(yùn)用簡單易懂的例子給大家介紹使用mybatis-plus生成 id主鍵時會遇到哪些問題,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

簡要說明

由于mybatis-plus會自動插入一個id到實(shí)體對象, 不管你封裝與否, 所以有時候?qū)е乱恍┮馔獾那闆r發(fā)生

默認(rèn)是生成一個長數(shù)字字符串(編碼不同可能結(jié)尾帶有字母)

錯誤

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

大致就是由于自動生成了一個id1110423703487479810, 但是無法放入到integer中

解決方案一

1. 修改id字段類型

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

2. 調(diào)整數(shù)據(jù)庫id字段類型

將數(shù)據(jù)庫的id字段的長度(改為20位)

解決方案二

如果想要使用id自增的, 就需要把mybatis-plus這個id生成的功能給關(guān)掉

添加注解

在id字段上加上如下注解即可

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

其他type類型介紹

  • AUTO : AUTO(0, “數(shù)據(jù)庫ID自增”),
  • INPUT : INPUT(1, “用戶輸入ID”),
  • ID_WORKER : ID_WORKER(2, “全局唯一ID”),
  • UUID : UUID(3, “全局唯一ID”),
  • NONE : NONE(4, “該類型為未設(shè)置主鍵類型”),
  • ID_WORKER_STR : ID_WORKER_STR(5, “字符串全局唯一ID”);

關(guān)于使用mybatis-plus生成 id主鍵時會遇到哪些問題就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI