欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決mybatis-plus新增數(shù)據(jù)自增ID變無序問題

 更新時間:2023年07月15日 09:45:14   作者:某猿蚊常叮  
這篇文章主要介紹了解決mybatis-plus新增數(shù)據(jù)自增ID變無序問題,具有很好的參考價值,希望對大家有所幫助。

mybatis-plus新增數(shù)據(jù)自增ID變無序

問題描述

在測試mybatis-plus時, 發(fā)現(xiàn)新增接口,新增出來的數(shù)據(jù)id變的巨長且無序, 經過查詢,原來是實體類少了注解, 下面是未添加之前的

@Data
public class User {
? ? private Integer id;
? ? private String username;
? ? // 忽略,不傳到前端
? ? @JsonIgnore
? ? private String password;
? ? private String nickname;
? ? private String email;
? ? private String phone;
? ? private String address;
}

解決

這里需要在id上指定, 自增的設定: @TableId(value = "id", type = IdType.AUTO), 如下

@Data
public class User {
? ? @TableId(value = "id", type = IdType.AUTO)
? ? private Integer id;
? ? private String username;
? ? // 忽略,不傳到前端
? ? @JsonIgnore
? ? private String password;
? ? private String nickname;
? ? private String email;
? ? private String phone;
? ? private String address;
}

但下次新增的時候, id會從你最后一次新增的那個id開始自增, 所以我們的將mysql的id進行重置, 重置方法, 這里就采用比較簡單的

1. 刪除錯誤id數(shù)據(jù)

首先將之前新增的無序的id數(shù)據(jù)刪除

2. alter table重置自增ID

例如:

DELETE FROM USER WHERE ID = 4;

使用 ALTER TABLE 重置自增 ID:

ALTER TABLE table_name AUTO_INCREMENT = value;
  • table_name為當前要重置自增 ID 的表名。
  • value必須是大于當前表中最大 ID 數(shù),本示例中當前表最大數(shù)為 2,我們可以設置成 3。

至此, 后面就可以愉快的寫代碼了

mybaits-plus新增數(shù)據(jù)明明沒有輸入id的值(id自增)卻報錯

mybaits-plus新增數(shù)據(jù)明明沒有輸入id的值(id自增)卻報錯???

新增數(shù)據(jù)

{
    "name": "第二fff會議室",
    "isApprove": 1,
    "remarks": "第1會議室"
}

報錯信息

Data truncation: Out of range value for column 'id' at row 1

明明沒有輸入id的值

并且數(shù)據(jù)庫表中已經設置了id為自增

在這里插入圖片描述

百度資料,終于找到了原因

這里貼圖展示原因:

mybatis-plus開啟主鍵雪花策略,生成19位隨機字符串,數(shù)據(jù)庫中的主鍵字段為int類型,長度小于19位。解決:將數(shù)據(jù)庫中表的主鍵字段設置為bigint類型

在這里插入圖片描述

結果成功

{
    "code": 201,
    "data": true,
    "message": "請求成功"
}

MyBatisPlus自增id怎么設置成int自增呢?

使用 mybatis-plus的insert方法,在底層會默認生成一個Long類型的UUID,這就導致跟數(shù)據(jù)庫里面類型不一致導致錯誤,我們首先要做的是要把這個默認自增的主鍵給禁了

1.在實體類 id上面加一個注解,并且實體類繼承Model

@TableId(value = “id”,type = IdType.INPUT)
private Integer id;

2.然后在重寫這個方法

@Override
protected Serializable pkVal() {
return this.id;
}

3.不要忘記了在數(shù)據(jù)庫設計表中勾選自動增長,不然會報錯:

在這里插入圖片描述

在這里插入圖片描述

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • System.getProperty(“l(fā)ine.separator“)含義及意義詳解

    System.getProperty(“l(fā)ine.separator“)含義及意義詳解

    這篇文章主要介紹了System.getProperty(“l(fā)ine.separator“)含義,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • idea 右鍵項目沒有run 運行選項

    idea 右鍵項目沒有run 運行選項

    這篇文章主要介紹了idea 右鍵項目沒有run 運行選項,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • Java實現(xiàn)消消樂中的消除功能

    Java實現(xiàn)消消樂中的消除功能

    這篇文章主要為大家詳細介紹了Java實現(xiàn)消消樂中的消除功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • java實現(xiàn)CSV文件導入與導出功能

    java實現(xiàn)CSV文件導入與導出功能

    這篇文章主要為大家詳細介紹了java實現(xiàn)CSV文件導入與導出,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • 解析Java編程中設計模式的開閉原則的運用

    解析Java編程中設計模式的開閉原則的運用

    這篇文章主要介紹了解析Java編程中設計模式的開閉原則的運用,開閉原則多應用于Java程序的擴展開發(fā)方面,需要的朋友可以參考下
    2016-02-02
  • Java線程啟動為什么要用start()而不是run()?

    Java線程啟動為什么要用start()而不是run()?

    這篇文章主要介紹了線程啟動為什么要用start()而不是run()?下面文章圍繞start()與run()的相關資料展開詳細內容,具有一定的參考價值,西藥的小火熬版可以參考一下,希望對你有所幫助
    2021-12-12
  • SpringBoot使用AOP記錄接口操作日志詳解

    SpringBoot使用AOP記錄接口操作日志詳解

    這篇文章主要為大家詳細介紹了SpringBoot使用AOP記錄接口操作日志,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • java自定義日期轉化類示例

    java自定義日期轉化類示例

    這篇文章主要介紹了java自定義日期轉化類示例,需要的朋友可以參考下
    2014-05-05
  • Jmeter基于JDBC請求實現(xiàn)MySQL數(shù)據(jù)庫測試

    Jmeter基于JDBC請求實現(xiàn)MySQL數(shù)據(jù)庫測試

    這篇文章主要介紹了Jmeter基于JDBC請求實現(xiàn)MySQL數(shù)據(jù)庫測試,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • Java設計模式之單例設計模式解析

    Java設計模式之單例設計模式解析

    這篇文章主要介紹了Java設計模式之單例設計模式解析,設計模式是在大量的實踐中總結和理論化之后優(yōu)選的代碼結構、編程風格、以及解決問題的思考方式,設計模式免去我們自己再思考和摸索,需要的朋友可以參考下
    2023-11-11

最新評論