MyBatis-Plus id主键使用ID_WORKER策略踩坑记录
文档来源,Mybatis-Plus 2.X:https://baomidou.gitee.io/mybatis-plus-doc/#/quick-start最新文档,Mybatis-Plus 3.X:https://mybatis.plus/guide/不想看过程的直接可以看结尾的解决方法。首先看官方介绍:官方说这里默认使用ID_WORKER策略实际测试时却一直报错,...
文档来源,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生成不成功,后续如果还有其它原因会再更新。
更多推荐
所有评论(0)