解决mybatis-plus新增数据自增ID变无序问题

 更新时间:2023年07月15日 09:45:14   作者:某猿蚊常叮  
这篇文章主要介绍了解决mybatis-plus新增数据自增ID变无序问题,具有很好的参考价值,希望对大家有所帮助。

mybatis-plus新增数据自增ID变无序

问题描述

在测试mybatis-plus时, 发现新增接口,新增出来的数据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数据

首先将之前新增的无序的id数据删除

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 数,本示例中当前表最大数为 2,我们可以设置成 3。

至此, 后面就可以愉快的写代码了

mybaits-plus新增数据明明没有输入id的值(id自增)却报错

mybaits-plus新增数据明明没有输入id的值(id自增)却报错???

新增数据

{
    "name": "第二fff会议室",
    "isApprove": 1,
    "remarks": "第1会议室"
}

报错信息

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

明明没有输入id的值

并且数据库表中已经设置了id为自增

在这里插入图片描述

百度资料,终于找到了原因

这里贴图展示原因:

mybatis-plus开启主键雪花策略,生成19位随机字符串,数据库中的主键字段为int类型,长度小于19位。解决:将数据库中表的主键字段设置为bigint类型

在这里插入图片描述

结果成功

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

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

使用 mybatis-plus的insert方法,在底层会默认生成一个Long类型的UUID,这就导致跟数据库里面类型不一致导致错误,我们首先要做的是要把这个默认自增的主键给禁了

1.在实体类 id上面加一个注解,并且实体类继承Model

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

2.然后在重写这个方法

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

3.不要忘记了在数据库设计表中勾选自动增长,不然会报错:

在这里插入图片描述

在这里插入图片描述

总结

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

相关文章

  • IDEA之IDEA连接gitlab协同开发方式

    IDEA之IDEA连接gitlab协同开发方式

    通过IDEA克隆GitLab项目实现代码协同开发相较于使用SourceTree, 通过IDEA连接GitLab进行代码协同开发更显便捷,方法包括通过VersionControl创建新项目,输入项目的git HTTP地址和本地路径,测试连接成功后克隆项目,修改代码后
    2024-11-11
  • Spring中BeanUtils.copyProperties的坑及解决

    Spring中BeanUtils.copyProperties的坑及解决

    这篇文章主要介绍了Spring中BeanUtils.copyProperties的坑及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Spring Boot 如何将 Word 转换为 PDF

    Spring Boot 如何将 Word 转换为 PDF

    这篇文章主要介绍了Spring Boot将Word转换为 PDF,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • 在Spring中配置Quartz的三种方式

    在Spring中配置Quartz的三种方式

    Spring Quartz 是一个任务调度框架,它允许我们定期执行特定的任务,在 Spring 中,我们可以通过多种方式来配置 Quartz,包括使用 ​​@Scheduled​​ 注解、XML 配置和 Java 配置,本文将介绍如何在 Spring 中使用这三种方式来配置 Quartz,需要的朋友可以参考下
    2025-01-01
  • Springboot迁移到Micronaut实现过程详解

    Springboot迁移到Micronaut实现过程详解

    这篇文章主要为大家 介绍了Springboot迁移到Micronaut实现过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • 详解Spring Boot下使用logback 记录多个文件日志

    详解Spring Boot下使用logback 记录多个文件日志

    这篇文章主要介绍了详解Spring Boot下使用logback 记录多个文件日志,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • SpringBoot整合Lettuce redis过程解析

    SpringBoot整合Lettuce redis过程解析

    这篇文章主要介绍了SpringBoot整合Lettuce redis过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • springMVC4之强大类型转换器实例解析

    springMVC4之强大类型转换器实例解析

    本篇文章主要介绍了springMVC4之强大类型转换器实例解析,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • Java中map和flatMap的区别举例详解

    Java中map和flatMap的区别举例详解

    这篇文章主要给大家介绍了关于Java中map和flatMap区别的相关资料,在Java中Stream接口有map()和flatmap()方法,两者都有中间流操作,并返回另一个流作为方法输出,需要的朋友可以参考下
    2023-10-10
  • 关于mybatis callSettersOnNulls 配置解析

    关于mybatis callSettersOnNulls 配置解析

    这篇文章主要介绍了关于mybatis callSettersOnNulls 配置,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2018-06-06

最新评论