Mybatis-Plus自動生成id涉及的問題解決過程
起因
一開始我發(fā)現我頁面和數據庫中用戶id不一致,導致我通過id刪除用戶操作時,找不到對應id,結果導致刪除不了。
如下圖:

解決過程
① 我第一想到的辦法就是能不能把生成的id變的短而簡單,比如1,2,3,4... 這樣就不會讓頁面和數據庫的id不一致。
于是我就給實體類主鍵添加@TableId(value="id",type=IdType.AUTO) 注解,

讓主鍵id不使用雪花算法生成id,用數據庫自增id的形式生成id(此時如果你數據庫id并沒有設置為自增,那就會報錯!)
PS: 很多人添加了上圖注解后,添加User后仍然發(fā)現生成的id是19位的數字,其實并不是因為這個@TableId沒生效,而是因為數據庫保留了之前雪花算法id的最大值,從此以后就以這個最大值為基礎進行自增。
還有,如果你簡單的以為把數據庫表中原先19位的用戶id全部改為1,2,3,4....等短而簡單的數字作為id,配合@TableId注解,想著添加新的User的時候生成的 id 就不會是19位的數字了,但結果依舊為19位的數字,還是那句話數據庫保留了之前雪花算法id的最大值,從此以后就以這個最大值為基礎進行自增。
看來只有我把數據庫的表刪了,重新建表,這樣讓數據庫由于id自增保留的最大id清空,最終發(fā)現添加新User就變成了1,2,3,4......成功解決?。?!
②還有個辦法就是把User的id改成String類型,這樣也能讓前端JS和后端的id一致。
或者在項目中都是將注解標注在對應字段上,在Json序列化的時候把Long自動轉為String。
@JsonSerialize(using = ToStringSerializer.class)
private Long id;總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Java數組使用binarySearch()方法查找指定元素的實現
這篇文章主要介紹了Java數組使用binarySearch()方法查找指定元素的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-01-01

