作用(自定义主键生成策略):
@GeneratedValue注解存在的意义主要就是为一个实体生成一个唯一标识的主键,@GeneratedValue提供了主键的生成策略,即主要作用时自定义主键生成策略。默认SpringBoot的@GeneratedValue 是不需要加参数的,但是如果数据库控制主键自增(Auto_Increment), 不加参数就会报错。
@GeneratedValue注解有两个属性,分别是strategy和generator。
generator属性
generator属性的值是一个字符串,默认为"",其声明了主键生成器的名称。
strategy属性
strategy属性,提供四种值:
- AUTO主键由程序控制, 是默认选项 ,不设置就是这个
- IDENTITY 主键由数据库生成, 采用数据库自增长, Oracle不支持这种方式
- SEQUENCE 通过数据库的序列产生主键, MYSQL 不支持
- Table 提供特定的数据库产生主键, 该方式更有利于数据库的移植
四种数据库的支持情况:
- mysql数据库:
支持 GenerationType.TABLE
支持 GenerationType.AUTO
支持 G