MyBatis-Plus如何解决主键自增问题

 更新时间:2023年07月15日 09:30:35   作者:Been Doing  
这篇文章主要介绍了MyBatis-Plus如何解决主键自增问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

MyBatis-Plus主键自增失败

1、先看错误

Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5c731754]
2022-12-05 21:05:55.322 ERROR 17476 --- [nio-8989-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.DataIntegrityViolationException: 
### Error updating database.  Cause: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Out of range value for column 'id' at row 1
### The error may exist in com/baidu/mapper/SysAccountMapper.java (best guess)
### The error may involve com.baidu.mapper.SysAccountMapper.insert-Inline
### The error occurred while setting parameters
### SQL: INSERT INTO account  ( id, datatime )  VALUES  ( ?, ? )
### Cause: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Out of range value for column 'id' at row 1
; Data truncation: Out of range value for column 'id' at row 1; nested exception is com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Out of range value for column 'id' at row 1] with root cause

com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Out of range value for column 'id' at row 1

大概意思就是说,mybatis-plus添加数据的主键失败。

2、需求

想要数据库中添加数据,成自增的。

我明明在数据库设置了主键id自增,但是添加数据的时候没有自增那。

3、解决

1、在数据库中添加确保是自增。

2、在实体类上页添加自增

4、自增策略

  • 要想主键自增需要配置如下主键策略
  • 需要在创建数据表的时候设置主键自增
  • 实体字段中配置 @TableId(type = IdType.AUTO)

MyBatis-Plus插入后获取自增主键

1、在主键上的**@TableId注解增加属性 type**。

官方文档里各个参数的说明

2、设置之后,在调用mapper.insert(domain)方法之后,插入完成后,直接能从domain中取到最新的主键。

测试代码

结果如下:

测试结果

总结

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

相关文章

  • Java读取项目json文件并转为JSON对象的操作

    Java读取项目json文件并转为JSON对象的操作

    这篇文章主要介绍了Java读取项目json文件并转为JSON对象的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • 内存屏障由来及实现思路

    内存屏障由来及实现思路

    这篇文章主要为大家详细介绍了内存屏障由来及实现思路的详细讲解,让大家彻底的理解内存屏障,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2022-01-01
  • 深入Java万物之母Object类详情

    深入Java万物之母Object类详情

    这篇文章主要介绍了Java万物之母Object类详情,Object类,它是所有类的默认父类 ,子类不用使用extends关键字继承它,不管是JDK中的类,还是自定义的类
    2022-06-06
  • 详解Java目录操作与文件操作教程

    详解Java目录操作与文件操作教程

    本章具体介绍了目录操作、文件操作的基本使用方法和常用函数,图解穿插代码实现,感兴趣的朋友来看看吧
    2022-03-03
  • Java操作redis实现增删查改功能的方法示例

    Java操作redis实现增删查改功能的方法示例

    这篇文章主要介绍了Java操作redis实现增删查改功能的方法,涉及java操作redis数据库的连接、设置、增删改查、释放资源等相关操作技巧,需要的朋友可以参考下
    2017-08-08
  • 详解Java实现设计模式之责任链模式

    详解Java实现设计模式之责任链模式

    责任链模式是一种行为设计模式,允许你将请求沿着处理链发送,然后处理者都可对其进行处理,完成后可以再将其传递给下一个处理者。下面将会举例说明什么是责任链模式,责任链模式该如何使用
    2021-06-06
  • Java8新特性之Lambda表达式的使用

    Java8新特性之Lambda表达式的使用

    这篇文章主要介绍了Java8新特性之Lambda表达式的使用,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • Java利用ElasticSearch实现增删改功能

    Java利用ElasticSearch实现增删改功能

    这篇文章主要为大家详细介绍了Java如何利用ElasticSearch实现增删改功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-08-08
  • spring-boot整合ehcache实现缓存机制的方法

    spring-boot整合ehcache实现缓存机制的方法

    spring-boot是一个快速的集成框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。这篇文章主要介绍了spring-boot整合ehcache实现缓存机制,需要的朋友可以参考下
    2018-01-01
  • SpringMVC项目异常处理机制详解

    SpringMVC项目异常处理机制详解

    SpringMVC是一种基于Java,实现了Web MVC设计模式,请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将Web层进行职责解耦。基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,SpringMVC也是要简化我们日常Web开发
    2022-08-08

最新评论