Insert时报“Column ‘id‘ cannot be null“ 错误如何自动生成主键id

快来打我* 2024-04-21 19:24 186阅读 0赞

如果你想让 MyBatis-Plus 自动生成主键值,可以使用 IdType.AUTO 或者不设置 type 属性。IdType.AUTO 将告诉 MyBatis-Plus 使用数据库自增策略来生成主键。

  1. import com.baomidou.mybatisplus.annotation.TableId;
  2. import com.baomidou.mybatisplus.annotation.IdType;
  3. public class YourEntity {
  4. @TableId(type = IdType.AUTO)
  5. private Long id; // 这里的id为主键字段
  6. // 其他字段...
  7. // getters and setters...
  8. }

或者,你也可以省略 type 属性,因为默认的主键生成策略就是 AUTO

  1. import com.baomidou.mybatisplus.annotation.TableId;
  2. public class YourEntity {
  3. @TableId
  4. private Long id; // 这里的id为主键字段
  5. // 其他字段...
  6. // getters and setters...
  7. }

如果你的主键是字符串,你可以考虑使用 IdType.UUID 或者不设置 type,因为 MyBatis-Plus 默认会使用雪花算法生成一个唯一的字符串作为主键值。

  1. import com.baomidou.mybatisplus.annotation.TableId;
  2. import com.baomidou.mybatisplus.annotation.IdType;
  3. public class YourEntity {
  4. @TableId(type = IdType.UUID)
  5. private String id; // 这里的id为主键字段
  6. // 其他字段...
  7. // getters and setters...
  8. }

或者省略 type

  1. import com.baomidou.mybatisplus.annotation.TableId;
  2. public class YourEntity {
  3. @TableId
  4. private String id; // 这里的id为主键字段
  5. // 其他字段...
  6. // getters and setters...
  7. }

这样设置后,在插入数据时 MyBatis-Plus 会自动生成一个唯一的字符串作为主键值。确保数据库表中主键列允许为 null,且没有设置默认值。

发表评论

表情:
评论列表 (有 0 条评论,186人围观)

还没有评论,来说两句吧...

相关阅读