springboot中 @ApiModelProperty("主键 自增") @TableId(value = "id", type = IdType.AUTO) private Long id;这个字段不自增
时间: 2024-09-20 14:15:57 浏览: 50
mybatis-plus id主键生成的坑
在Spring Boot中,`@ApiModelProperty`注解主要用于将Java Bean的属性映射到API文档中的描述,而`@TableId`注解来自MyBatis-Spring,它用于标记表中的主键,并指定主键生成的方式。当你看到`@TableId(value = "id", type = IdType.AUTO)`这样的注解,`type = IdType.AUTO`表示主键生成策略是自动增长(通常是自增)。
然而,`@TableId(type = IdType.AUTO)`并不会直接改变`private Long id`字段是否自增,这只是一个配置,告诉持久层框架(比如MyBatis或Hibernate)应该使用哪种方式生成主键。如果你希望`id`字段不是自增,你需要明确地设置为非自动增长,比如使用数据库支持的其他方式,比如`Identity`(Oracle)或者`Sequence`(PostgreSQL),或者在代码层面手动处理插入操作时不赋值给`id`字段。
如果你想要取消Spring Boot的默认自动增长行为,可以在实体类中声明`id`字段为`@GeneratedValue(strategy=GenerationType.AUTO)`改为`GenerationType.IDENTITY`或显式指定数据库的序列名等。
```java
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) // 或者 @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequence_name") 如果有特定序列
private Long id;
```
阅读全文