给数据表插入一条数据,id为自增字段。
报错Cannot insert explicit value for identity column in table 'FuLiaoShenGou' when IDENTITY_INSERT is set to OFF.
原因:
int 类型
-
int
类型的字段:基本数据类型int
在 Java 中不能为null
,所以 MyBatis-Plus 会认为该字段已经被初始化(默认为0
),而不会把id
视作未赋值字段。因此,它会在执行insert
时,默认将id
视为0
,而不是null
,然后会插入0
到数据库。 - 所以在执行insert方法的时候,id字段是有值的,而且为0,所以才会出现,自增字段不允许设置值的报错
解决方案:int 改为integer
-
自增 ID 行为:对于自增字段来说,通常是通过
null
来指示数据库自动生成一个 ID。如果你使用的是基本数据类型int
,MyBatis-Plus 会将其视为已初始化,因此它不会发送null
到数据库,而是发送一个0
。数据库会根据你的表的自增机制生成 ID,但0
仍然会被插入到数据库中。