Mybatis-Plus自动生成id涉及的问题

 起因: 一开始我发现我页面和数据库中用户id不一致,导致我通过id删除用户操作时,找不到对应id,结果导致删除不了。如下图:

 解决过程: 
        ① 我第一想到的办法就是能不能把生成的id变的短而简单,比如1,2,3,4...  这样就不会让页面和数据库的id不一致。于是我就给实体类主键添加@TableId(value="id",type=IdType.AUTO) 注解,

让主键id不使用雪花算法生成id,用数据库自增id的形式生成id(此时如果你数据库id并没有设置为自增,那就会报错!
        PS: 很多人添加了上图注解后,添加User后仍然发现生成的id是19位的数字,其实并不是因为这个@TableId没生效,而是因为数据库保留了之前雪花算法id的最大值,从此以后就以这个最大值为基础进行自增。 
        还有,如果你简单的以为把数据库表中原先19位的用户id全部改为1,2,3,4....等短而简单的数字作为id,配合@TableId注解,想着添加新的User的时候生成的 id 就不会是19位的数字了,但结果依旧为19位的数字,还是那句话数据库保留了之前雪花算法id的最大值,从此以后就以这个最大值为基础进行自增。 
        看来只有我把数据库的表删了,重新建表,这样让数据库由于id自增保留的最大id清空,最终发现添加新User就变成了1,2,3,4......成功解决!!!

        ②还有个办法就是把User的id改成String类型,这样也能让前端JS和后端的id一致。
或者在项目中都是将注解标注在对应字段上,在Json序列化的时候把Long自动转为String。 

    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值