@Id @GeneratedValue

[@Id  @GeneratedValue(strategy = GenerationType.IDENTITY)]    
   用于指定 主键列 和 主键增长策略
   @GeneratedValue(strategy = GenerationType.IDENTITY) -- MySQL
   属性:
   Strategy - 表示主键生成策略,取值有:
   > GenerationType.AUTO
   - 根据底层数据库自动选择(默认),若数据库支持自动增长类型,则为自动增长。
   > GenerationType.INDENTITY
   - 根据数据库的 Identity 字段生成,支持 DB2MySQLMSSQL ServerSyBase HyperanoicSQL
   数据库的 Identity 类型主键。
   > GenerationType.SEQUENCE
   - 使用 Sequence 来决定主键的取值,适合 OracleDB2 等支持 Sequence 的数据库,一般结合
   @SequenceGenerator 使用。-- 注:(Oracle 没有自动增长类型,只能用 Sequence)
   > GenerationType.TABLE - 使用指定表来决定主键取值,结合@TableGenerator 使用。  
   
   如:
   @Id
      @TableGenerator(name="tab_cat_gen",allocationSize=1)
      @GeneratedValue(Strategy=GenerationType.Table)
       Generator - 表示主键生成器的名称,这个属性通常和 ORM 框架相关 , 例如:
   Hibernate 可以指定 uuid 等主键生成方式
   @SequenceGenerator — 注解声明了一个数据库序列。
   
   属性:
   name - 表示该表主键生成策略名称,它被引用在@GeneratedValue 中设置的“gernerator”值中。
   sequenceName - 表示生成策略用到的数据库序列名称。
   initialValue - 表示主键初始值,默认为 0.
     allocationSize - 每次主键值增加的大小,例如设置成 1,则表示每次创建新记录后自动加 1,默认为50.
   示例 :
   @Id
   @GeneratedValues(strategy=StrategyType.SEQUENCE)
   public int getPk() {
   return pk;
   }
   Hibernate 的访问类型为 field 时,在字段上进行注解声;
   访问类型为 property 时,在 getter 方法上进行注释声明。
package sun.rain.amazing.javax.anno.domain;

import lombok.Data;

import javax.persistence.*;

/**
 * @author  sunRainAmazing
 */
@Entity
@Data
public class UserIdGeneratedValue {
    /**
     * 代表主键的命名策略  mysql下 自增
  */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String username;

    public UserIdGeneratedValue(String username) {
        this.username = username;
    }

    public UserIdGeneratedValue() {
    }
}

/**
 CREATE TABLE `user_id_generated_value` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `username` varchar(255) DEFAULT NULL,
 PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8

 */


猜你喜欢

转载自blog.csdn.net/sunrainamazing/article/details/80783146
id
今日推荐