mp 默认的是雪花算法生成的全球ID . 检查id 注解 @TableId 是否设为其他枚举值, 并且数据库id 勿设为自增
如果数据库中的主键字段名和实体中的属性名,不一样且不是驼峰之类的对应关系,可以在实体中表示主键的属性上加@Tableid注解,并指定@Tableid注解的value属性值为表中主键的字段名既可以对应上。
我怀疑这应该是MP默认主键策略的问题,你没配置策略,他的默认策略是雪花算法,用雪花算法生成主键了。而你主键类型为Integer,最大21亿左右,超范围了,所以报错。后来你配置了策略为AUTO,就是数据库自增,MP就不给你设置主键了,所以正常。
主键注解除了插入外,还有其他用途,如果你使用了主键注解,在调用mp提供的根据id更新和根据id删除的方法时,mp会根据主键注解判断哪个字段是主键来确定where条件。
@TableName注解中的schema就是数据库中的schema,只不过不同数据库中的schema的含义是有差异的。
懂了,MP开启了驼峰转下划线,操作的sql语句,会依据属性名转换为下划线的列名称,如,会将userId转换为user_id 会将userIdS转换为user_id_s