mybatis Plus ID主鍵生成時會踩的坑


 在用mybatis Plus搞項目時發現一個坑,所以和大家分享一下,避免重復踩坑

  問題: 在搞一個功能的修改時,發現獲取的id用條件查詢查不到數據,無法修改該數據,開始排查出錯原因,

    前端拿到的數據: 數據庫存取的數據: 

     可以看的出來返回給前端的數據和數據庫里面的數據不一致了,然后就到導致修改獲取的id查不到該條數據

  那為什么會出現這樣的問題呢

    mybatis-plus的主鍵策略 ASSIGN_ID 策略是根據雪花算法會生成一個Long型的19位的數值,這個數值傳到前台之后,超過了js中數字的最大范圍,具體表現為最后兩位始終為 0。所以導致了該問題的出現

  解決辦法:

    在實體類中把id的主鍵上轉換類型,用別的類型就可以把該數值完全的拿到了(注意細節: 這樣解決的辦法,是需要在每個id都需要加上這個注解的,這樣下來可能會比較麻煩.所以我用的辦法是我把所有公共用的值都封裝在了一起(),使用的時候直接繼承了這個實體,所以只寫了一個id注解,所有的都可以正常使用的,如果你的不是這種的,你可能是需要每個實體類的id都需要加上這個注解哦!)

    @TableId(type = IdType.ASSIGN_ID)
    @JsonSerialize(using = ToStringSerializer.class) //轉換類型為String    
    private Long id;

    加上以后就可以把id的類型轉換為String類型的,完整的拿到了

      

 

    也是第一次遇到這樣的問題,解決問題的辦法也有限,有可能會有很好的解決辦法.

 


免責聲明!

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



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