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 |