mybatis-plus自带保存接口,主键Id不是从1开始问题及解决
问题描述
调用mybatis-plus自带的save相关保存接口,自动插入的主键Id非常大,导致数据很快超出范围报错。
解决方案1
在相应的bean实体类中对主键Id添加注解 @TableId(type = IdType.AUTO) ,这样mybatis-plus就会忽略掉主键,转而用数据库自己的自增长模式。
/** * 非业务主键id */ @TableId(type = IdType.AUTO) private Integer id;
经过测试,添加了该注解后,我将测试表中的数据清理后,插入数据库的 id 还是很大,没有起作用。
解决方案2
风险情况:
使用 truncate table 方法属于重置数据库表,会将数据库表的内容全部删除,如果是新表创建,则可以使用。
如果需要兼容旧数据,一定要备份,一定要备份,一定要备份,通过备份数据进行重新插入,实现 id 自增。
truncate table 表名
执行完后,重新插入,id正确。
解决方案3
还有一种可能就是,创建表的时候设置了主键id初始值:AUTO_INCREMENT=XXX,我们也可以通过建表语句进行设置:
CREATE TABLE `device` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `device_code` varchar(64) NOT NULL COMMENT '设备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='基础信息表';
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
SpringBoot使用classfinal-maven-plugin插件加密Jar包的示例代码
这篇文章给大家介绍了SpringBoot使用classfinal-maven-plugin插件加密Jar包的实例,文中通过代码示例和图文讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下2024-02-02
SpringBoot使用log4j2将日志记录到文件及自定义数据库的配置方法
这篇文章主要介绍了SpringBoot使用log4j2将日志记录到文件及自定义数据库的配置方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧2024-03-03
详解Spring Cloud Consul 实现服务注册和发现
这篇文章主要介绍了Spring Cloud Consul 实现服务注册和发现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-03-03
Java之synchronized(含与ReentrantLock的区别解读)
文章主要介绍了`synchronized`和`ReentrantLock`的区别,包括它们的实现原理、公平性、灵活性、可中断性等方面,同时,文章详细解释了`synchronized`的使用方法,包括修饰实例方法、静态方法和代码块的情况,以及如何分析代码是否互斥和可重入性2025-01-01


最新评论