接下来,验证一番后,发现,Mybatis-Plus在做insert操作时,确实自动生成一条长19的数字当做该条数据的id插入到MySql,导致虽然MySql表设置了自增,但被Mybatis-Plus生成的id为1468844351843872769所影响,导致下一条数据自动递增值变成1468844351843872770,这种过长的id值,在做索引维护时,是很影响效率,占用空间过大,故而,这...
发现mybatis-plus默认的主键生成是全局唯一的UUID,会导致生成的id过长。 并且官方也提供了解决方法,如下图 可这只是将防止了前端接收时的精度丢失,并没有解决我的问题。 根据文档,可以得出一个新的解决办法,并且不用更改DO类代码: 将文档中所说的id-type配置设置为0即可。 Mybatis-Plus id主键生成的问题 简要...
生成的19位对于java long类型来说没有任何问题,问题在于我们给前端返回的时候,前端js最长只能支持到17位的数值类型,后面两位会补0,也就是说,比如一条数据的ID为:133470684736716869,到前端看起来就会变成1334706847367100,这就导致后续的业务会报错。 2. 解决方案 现在你知道了问题的原因在于JS无法解析1...
public enum IdType {AUTO(0), //数据库id自增NONE(1), //未设置主键INPUT(2), //手动输入ID_WORKER(3), //默认全局idUUID(4), //全局唯一id uuidID_WORKER_STR(5); //ID_WORKER字符串表示} 对应id字段添加主键生成策略 package com.wei.pojo;import com.baomidou.mybatisplus.annotation.IdType;i...
需要生成String类型的UUID时,使用该方法。 三、解决办法(方式二,推荐) 参考后台的long类型的最大值大于js的number类型,此方式侵入最小,已验证,可行! 注解如下 import com.fasterxml.jackson.databind.annotation.JsonSerialize;import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;... ...
mybatis-plus自3.3.0开始,默认使用雪花算法+UUID(不含中划线),但是它并没有强制让开发者配置机器号。这一点很是疑惑,这样可能会让不了解雪花算法的人埋下了一个坑。 但是这么强大的一个框架难道真的没有做优化吗?带着问题,查看了下mybatis-plus雪花算法源码com.baomidou.mybatisplus.core.toolkit.Sequence。最终...
baomidou/mybatis-plusPublic NotificationsYou must be signed in to change notification settings Fork4.3k Star16.4k New issue KevinCGHopened this issueAug 3, 2018· 3 comments KevinCGHcommentedAug 3, 2018 如题,目前配置id-type: uuid,自动生成的是32位的uuid ...
@TableId(type = IdType.ASSIGN_UUID) private String id; private String userName; private String passWord; } 3,AUTO(数据库 ID 自增) 对于像 MySQL 这样的支持主键自动递增的数据库,我们可以使用 IdType.AUTO 策略。 1 2 3 4 5 6 7 8 @Data public class UserInfo { //指定主键使用数据库ID自增...
(2)UUID/GUID:采用随机算法生成的字符串,理论上能够保证不重复,但主键长度较长,不便于存储和索引。 (3)分布式ID生成器:采用雪花算法、UID、美团Leaf等算法生成的主键,能够在分布式系统中实现全局唯一,且主键长度较短,但实现略复杂。 (4)数据库序列(Sequence):一种由数据库提供的生成主键的方法,能够保证主键唯一,...