概述
Mybatis-plus中主键id生成的一些问题
所遇问题
在用Mybatis-plus中insert()方法插入数据时,我没有为id写set()方法。根据以往的经验,我想着id会自动生成的。但是事与愿违,出现了如下问题:
Could not set property 'id' of 'class com.shallow.entity.User' with value '1378574418980712450' Cause: java.lang.IllegalArgumentException: argument
解析
这里它生成了一个19位数字的id'1378574418980712450'
(这是Mybatis-plus生成id的一个策略)。我id的类型是Integer,它远远超出我Integer的长度,因此它就无法将数据插入数据库中。
解决办法
1、在主键上添加@TableId(value = “id”,type = IdType.AUTO)属性
这种方式是关闭了Mybatis-plus自动生成id的方法,沿用咱们数据库中表id的自动增长。
2、全局配置方式添加id-type:auto
可以在application.yml(我这里是yml格式的)中添加全局配置。设置id-type: auto
。(经测试,id-type: none
也可以)
global-config:
db-config:
id-type: auto
这是id-type一些属性值的具体含义
auto 数据库id自增
none 该类型为未设置主键类型
input 用户输入id
id_worker 全局唯一id,Long类型的主键
id_worker_str 字符串全局唯一id
uuid 全局唯一id,uuid类型的主键
总结
综上所述,可以用以下两种方法解决Mybatis-plus中主键id生成的一些问题
1. 在主键上id上添加@TableId(value = “id”,type = IdType.AUTO)属性
2. 全局配置方式添加id-type:auto
最后
以上就是单身中心为你收集整理的Mybatis-plus中主键id生成的一些问题的全部内容,希望文章能够帮你解决Mybatis-plus中主键id生成的一些问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复