针对 MyBatis-Plus 3.4.1 版本,结论是:在默认配置下,如果未指定 ID 值,insert 操作会自动生成 ID。
3.4.1 版本下的具体行为
你提到的 3.4.1 属于 3.3.0 之后的版本,主键策略已经过调整:
-
默认策略是雪花算法 :如果不做任何配置,
@TableId的type默认为IdType.NONE,它会跟随全局配置。而全局默认的 ID 生成策略就是雪花算法 (对应ASSIGN_ID),会自动生成一个 Long 或 String 类型的唯一 ID。 -
自动回填 :使用该策略时,MyBatis-Plus 在插入前生成 ID,并会自动将其回填到你的实体对象中,插入后你可以直接通过
getId()获取。
需要注意的版本特性
3.4.x 版本增加了一个关于主键类型的警告 (不影响运行):如果实体类的主键字段使用了 long 或 int 等基本数据类型 ,启动时会提示建议改为包装类(Long / Integer)。这是因为基本类型默认值为 0,在自增策略下可能被误认为是你手动指定的值,而包装类的 null 能更明确地表示"由框架生成"。