Mybatis-Plus批量插入Mysql中id值自增值过大问题及解决

 更新时间:2026年06月26日 15:59:13   作者:江禾_  
MyBatis-Plus批量新增数据时自增ID问题解决方案,结合数据库设置与代码注解配置,确保自增ID正确生成与使用

Mybatis-Plus批量插入Mysql中id值自增值过大问题及解决

问题描述

使用MyBatis-Plus批量新增数据时,自增id过大,且有时为负数。

同事尝试过手动修改数据库自动递增值,导致数据库表数据操作失败,也无法删表重建。

问题描述

问题描述_图2

问题描述_图3

问题排查

检查数据库和代码中和id相关的数据,发现id未设置自增类型。

Mybatis-Plus之 @TableId(value=“xxx”,type = IdType.xxx)注解

@TableId(value=“设置数据库字段值”,type = IdType.xxx)注解

类型
AUTO数据库自增ID类型可以是Interger/Long;
NONE

数据库未设置主键类型

(当手动设置主键id值后插入数据库,值会按设置的值插入,若未手动设置值,值会变成一串很长的数字插入)

INPUT用户自己输入ID,如果未设置插入数据库,会报错
ID_WORKER生成的snowflakeId 是19位的全局唯一ID, 类型必须是Long
UUID局唯一ID,类型是字符串
ID_WORKER_STRidWorker 的字符串表示, 类型是字符串

注意:当不添加注解时,会默认使用ID_WORKER

解决方案

根据项目需求选择对应的自增方式。

1、在对应实体类 entity 中添加 id 自增 type

在对应实体类 entity 中添加 id 自增 type

2、清空数据表,重置MySQL表主键自增值

[ 运行前请自行数据备份 , 运行后原数据会丢失 ]

TRUNCATE TABLE table_name;
ALTER TABLE table_name AUTO_INCREMENT = value;

例如:

alter table student_info AUTO_INCREMENT= 1;

查询修改后的自动递增值,查看是否修改成功:

select AUTO_INCREMENT FROM information_schema.tables WHERE table_name="表名" and table_schema = "数据库名称";  

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MyBatis插入数据返回主键的介绍

    MyBatis插入数据返回主键的介绍

    今天小编就为大家分享一篇关于MyBatis插入数据返回主键的介绍,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • java分布式面试接口如何保证幂等及概念理解

    java分布式面试接口如何保证幂等及概念理解

    这篇文章主要为大家介绍了java分布式面试中接口如何保证幂等的问题解答以及概念描述,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-03-03
  • Java 断言 assert的用法详解

    Java 断言 assert的用法详解

    Java assert断言机制是Java5中推出的新特性,它主要用于在程序运行时检查状态或假设的正确性,本篇文章将全面详细地讲解Java assert断言机制,包括断言概述、语法规则、工作原理、使用场景、注意事项以及示例代码等方面,需要的朋友可以参考下
    2023-05-05
  • Java线程池配置的一些常见误区总结

    Java线程池配置的一些常见误区总结

    这篇文章主要给大家介绍了关于Java线程池配置的一些常见误区,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • 使用JAVA8 filter对List多条件筛选的实现

    使用JAVA8 filter对List多条件筛选的实现

    这篇文章主要介绍了使用JAVA8 filter对List多条件筛选的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Spring boot中mongodb的使用

    Spring boot中mongodb的使用

    MongoDB是最早热门非关系数据库的之一,使用也比较普遍,一般会用做离线数据分析来使用,放到内网的居多。这篇文章主要介绍了Spring boot中mongodb的使用,需要的朋友可以参考下
    2017-05-05
  • Spring 中使用Quartz实现任务调度

    Spring 中使用Quartz实现任务调度

    这篇文章主要介绍了Spring 中使用Quartz实现任务调度,Spring中使用Quartz 有两种方式,感兴趣的小伙伴们可以参考一下。
    2017-02-02
  • springcloud之自定义简易消费服务组件

    springcloud之自定义简易消费服务组件

    这篇文章主要介绍了springcloud之自定义简易消费服务组件,本篇来使用rest+ribbon消费服务,并且通过轮询方式来自定义了个简易消费组件,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • idea创建spring boot项目及java版本只能选择17和21的问题

    idea创建spring boot项目及java版本只能选择17和21的问题

    这篇文章主要介绍了idea创建spring boot项目及java版本只能选择17和21的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-01-01
  • Socket+JDBC+IO实现Java文件上传下载器DEMO详解

    Socket+JDBC+IO实现Java文件上传下载器DEMO详解

    这篇文章主要介绍了Socket+JDBC+IO实现Java文件上传下载器DEMO详解,需要的朋友可以参考下
    2017-05-05

最新评论