mybatis-plus id主鍵生成的坑


轉 https://blog.csdn.net/qq_34208844/article/details/88819467

簡要說明
由於mybatis-plus會自動插入一個id到實體對象, 不管你封裝與否, 所以有時候導致一些意外的情況發生

默認是生成一個長數字字符串(編碼不同可能結尾帶有字母)

錯誤:
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, 這樣就能保證有足夠位數放入生成的id

2. 調整數據庫id字段類型
  將數據庫的id字段的長度(改為20位)

解決方案二

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

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

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


其他type類型介紹
  AUTO : AUTO(0, “數據庫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”);
————————————————
原文鏈接:https://blog.csdn.net/qq_34208844/article/details/88819467


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM