文档来源,Mybatis-Plus 2.X:https://baomidou.gitee.io/mybatis-plus-doc/#/quick-start

最新文档,Mybatis-Plus 3.X:https://mybatis.plus/guide/

不想看过程的直接可以看结尾的解决方法。

 

首先看官方介绍:

官方说这里默认使用ID_WORKER策略

实际测试时却一直报错,无法产生对应的ID,这里记录一下解决问题的过程

 

1. 刚开始测试的实体类该id数据类型为Integer

测试添加数据后报错:

Could not set property 'id' of 'class com.hlt.entity.Login' with value '1202575537856352258' Cause: java.lang.IllegalArgumentException: argument type mismatch

大概意思是生成的id参数类型不匹配

看网上说将其改为long类型,因为生成的19位数据超出了该字段所承载的范围,故报错;

但是经测试需要改为Long才能使用,使用long则会无法产生id

参考来源:https://blog.csdn.net/qq_27520051/article/details/103058220

 

2. 实体类id类型更换为Long后依然报错:

再次添加数据后报错:

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

大概意思是id的值超出范围

参考来源:https://blog.csdn.net/itmyhome1990/article/details/79299050

 

这是因为数据库中该id字段类型为int,生成的ID超出了其范围,将其改为bigint:

 

再次添加 成功:

 

总结:解决方案为

1. 修改实体类中id字段的类型为 Long

2. 修改数据库id字段的类型为 bigint

 

目前发现的主要是由这两种问题导致的ID生成不成功,后续如果还有其它原因会再更新。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐