mybatis-plus自帶保存接口,主鍵Id不是從1開(kāi)始問(wèn)題及解決
問(wèn)題描述
調(diào)用mybatis-plus自帶的save相關(guān)保存接口,自動(dòng)插入的主鍵Id非常大,導(dǎo)致數(shù)據(jù)很快超出范圍報(bào)錯(cuò)。
解決方案1
在相應(yīng)的bean實(shí)體類中對(duì)主鍵Id添加注解 @TableId(type = IdType.AUTO) ,這樣mybatis-plus就會(huì)忽略掉主鍵,轉(zhuǎn)而用數(shù)據(jù)庫(kù)自己的自增長(zhǎng)模式。
/** * 非業(yè)務(wù)主鍵id */ @TableId(type = IdType.AUTO) private Integer id;
經(jīng)過(guò)測(cè)試,添加了該注解后,我將測(cè)試表中的數(shù)據(jù)清理后,插入數(shù)據(jù)庫(kù)的 id 還是很大,沒(méi)有起作用。
解決方案2
風(fēng)險(xiǎn)情況:
使用 truncate table 方法屬于重置數(shù)據(jù)庫(kù)表,會(huì)將數(shù)據(jù)庫(kù)表的內(nèi)容全部刪除,如果是新表創(chuàng)建,則可以使用。
如果需要兼容舊數(shù)據(jù),一定要備份,一定要備份,一定要備份,通過(guò)備份數(shù)據(jù)進(jìn)行重新插入,實(shí)現(xiàn) id 自增。
truncate table 表名
執(zhí)行完后,重新插入,id正確。
解決方案3
還有一種可能就是,創(chuàng)建表的時(shí)候設(shè)置了主鍵id初始值:AUTO_INCREMENT=XXX,我們也可以通過(guò)建表語(yǔ)句進(jìn)行設(shè)置:
CREATE TABLE `device` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵ID', `device_code` varchar(64) NOT NULL COMMENT '設(shè)備id', PRIMARY KEY (`id`) USING BTREE, UNIQUE KEY `idx_device_code` (`device_code`,`del_flag`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='基礎(chǔ)信息表';
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot JAR和WAR方式打包并部署的詳細(xì)步驟及對(duì)比分析
無(wú)論選擇JAR還是WAR部署方式,關(guān)鍵在于匹配團(tuán)隊(duì)的技術(shù)棧、運(yùn)維能力和業(yè)務(wù)需求,Spring Boot的靈活性支持兩種部署模式,為不同場(chǎng)景提供了合適的解決方案,本文給大家詳細(xì)對(duì)比分析了這兩種方式,需要的朋友可以參考下2026-01-01
Java中ArrayList的常見(jiàn)用法示例小結(jié)
本文介紹了Java的ArrayList,它是一個(gè)動(dòng)態(tài)數(shù)組,可以自動(dòng)調(diào)整大小,支持添加、刪除、獲取元素等操作,同時(shí),還討論了如何存儲(chǔ)基本數(shù)據(jù)類型以及在多線程環(huán)境下的使用注意事項(xiàng),感興趣的朋友一起看看吧2025-02-02
Java不帶break將導(dǎo)致case穿透問(wèn)題
這篇文章主要介紹了Java不帶break將導(dǎo)致case穿透問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
Java時(shí)區(qū)轉(zhuǎn)換實(shí)例代碼解析
這篇文章主要介紹了Java時(shí)區(qū)轉(zhuǎn)換實(shí)例代碼解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
使用Java將字符串在ISO-8859-1和UTF-8之間相互轉(zhuǎn)換
大家都知道在一些情況下,我們需要特殊的編碼格式,如:UTF-8,但是系統(tǒng)默認(rèn)的編碼為ISO-8859-1,遇到這個(gè)問(wèn)題,該如何對(duì)字符串進(jìn)行兩個(gè)編碼的轉(zhuǎn)換呢,下面小編給大家分享下java中如何在ISO-8859-1和UTF-8之間相互轉(zhuǎn)換,感興趣的朋友一起看看吧2021-12-12

