Mybatis-Plus⾃动⽣成的数据库id过长 ⼀、问题 作为⼀名第⼀次使⽤mybatis-plus的萌新开发⼯程师,在项⽬开发过程中遇到⼀个问题。当使⽤mybatis-plus⾃带的mybatis-generate⽣成DO⽂件,如下图所⽰ DO类由注释@Table修饰,主键id由注释@Id,@GeneratedValue修饰。但是使⽤这样的默认DO...
当使用mybatis-plus自带的mybatis-generate生成DO文件,如下图所示 DO类由注释@Table修饰,主键id由注释@Id,@GeneratedValue修饰。但是使用这样的默认DO进行数据库操作时,会有导致数据库自动生成的主键id过长,如下所示 这样的19位id,会存在一些问题: 1)前端拿到这样的id后,会发生Number精度丢失,导致id数值发生变化,使...
原因肯定是mybatisplus用了框架自身的id增长机制,但是不知道怎么控制,所以归根结底还是对框架不熟悉吧。 解决办法就是关掉mybatis自增长,在实体映射类里更改相关注解即可: @TableId(value = "role_id",type = IdType.AUTO) private Long roleId; 注意红色部分,是使用数据库自带的增长策略。 本人遇到问题是因为自...
IdGenerator是一个缩了位的雪花ID生成算法,生成的位数是16位,不会导致JS精度丢失 package com.yrt.framework.config; import java.util.Date; import java.util.UUID; /** * compressed id generator, result id not great than 53bits before 2318-06-04. */ public class IdGenerator { private static IdG...
排查原因发现是引用了mybatis-plus组件,该组件会自动插入一个id到实体对象, 导致的原因: 实体类主键上面只添加了@TableId 解决办法: 第一种(推荐): 在主键上面添加注解: @TableId(value="id",type = IdType.AUTO),id为数据库索引字段,重新部署后台程序,然后重新恢复数据库表对应的自增方式,处理历史数据。设置...
百度网上的说法,当Mybatis-Plus实体类没有显示设置主键策略时,将默认使用雪花算法生成,也就是IdType.ID_WORKER或者IdType.ID_WORKER_STR,具体是long类型的19位还是字符串的19位,应该是根据字段定义类型来判断。 snowflake算法是Twitter开源的分布式ID生成算法,结果是一个long类型的ID 。其核心思想:使用41bit作为毫秒...
百度网上的说法,当Mybatis-Plus实体类没有显示设置主键策略时,将默认使用雪花算法生成,也就是IdType.ID_WORKER或者IdType.ID_WORKER_STR,具体是long类型的19位还是字符串的19位,应该是根据字段定义类型来判断。 snowflake算法是Twitter开源的分布式ID生成算法,结果是一个long类型的ID 。其核心思想:使用41bit作为毫秒...
这就很奇怪了,目前该表数据量很少,且主键是设置AUTO_INCREMENT,正常而言,应该自增id仍在1000范围内,但目前已经变成一串长数字。 底层ORM框架用的是Mybatis-Plus,我寻思了一下,这看起来像是在插入数据库就自动生成的id,导致并非默认使用MySql的自增AUTO_INCREMENT来生成id。
这就很奇怪了,目前该表数据量很少,且主键是设置AUTO_INCREMENT,正常而言,应该自增id仍在1000范围内,但目前已经变成一串长数字。 底层ORM框架用的是Mybatis-Plus,我寻思了一下,这看起来像是在插入数据库旧自动生成的id,导致并非默认使用MySql的自增AUTO_INCREMENT的id。
生成的id过长,实际业务或许不需要这么长的id,应该允许用户自行配置,缩短生成id的长度 重现步骤 报错信息 hakunamatata1 创建了任务 6年前 青苗 拥有者 6年前 复制链接地址 1、自增 2、IdType = INPUT 自己设置, 也可自动填充设置 青苗 修改任务状态为已拒绝 6年前 hakunamatata1 6年前 复制链接地址...