1、问题

spring-boot整合mybtais执行insert语句时,主键id为长文本数据。

2、分析问题

        1)数据库主键是否自增

        2)数据库主键的种子值设置的多少

3、解决问题

        1)数据库主键设置的时自增

        3)种子值是1

        所以排查是数据库的问题

4、继续归因

        1、打印项目执行sql日志,发现insert执行语句中,id已经赋值。

        2、分析id复制语句,发现是mybatis-plaus自动赋值。

5、mybatis-plaus主键策略

        发现mybatis-plus默认的主键生成是全局唯一的UUID,会导致生成的id过长。

AUTO 数据库自增 数据库表主键设置为自增
INPUT 用户输入 ID 用户提供主键值
ID_WORKER 使用 Snowflake 算法生成全局唯一 ID(Long 类型) 分布式系统中生成全局唯一 ID
UUID 使用 UUID 算法生成全局唯一 ID(String 类型) 需要全局唯一的字符串 ID
NONE 未设置主键类型 需要手动设置主键值
ID_WORKER_STR 使用 Snowflake 算法生成全局唯一 ID(String 类型) 生成全局唯一字符串 ID

   

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐