JPA中@Enumerated註解

@Enumerated用於標註枚舉字段,對應mysql的enum類型

  1. 源碼支持兩種類型

    package javax.persistence;
    
    public enum EnumType {
        ORDINAL,//按照枚舉的下標,使用Enum類型實例在Enum中聲明的順序,通過這個序號來將Enum類型字段映射成int類型來存儲;
        STRING;//按照枚舉的名字,使用Enum類型實例中的name屬性來完成映射,將Enum類型映射成字符串的方式
        private EnumType() {
        }
    }
    
  2. 默認情況

    當不使用任何註解的時候,默認情況下是使用ordinal屬性,序號是從0開始的

  3. ORDINAL例子

    3.1 定義一個Enum類

    public enum Gender {
        MALE,
        FEMALE
    }
    

    3.2 定義一個Entity

    @Data//自動生成get和set方法
    @Entity
    public class Person{ 
        @Id
        @GeneratedValue
        private Long id;
     
        @Column(nullable = false)
        private String name;
     
        @Column
        private Gender gender;
     
        public Person(String name, Gender gender){
            this.name = name;
            this.gender = gender;
        }
    }
    

    3.3 數據庫中表結構在這裏插入圖片描述
    Enum類型字段Gender被映射成int(11)類型

    3.4 插入數據

    @Test
    public void insert_data_into_person(){
        personService.save(new Person("Tom", Gender.MALE));
        personService.save(new Person("Joy", Gender.FEMALE));
    }
    
    

    3.5 查看數據庫中的插入結果
    在這裏插入圖片描述
    ​ 表中Gender.MALE對應的序號是0,Gender.FEMALE對應的序號是1

  4. STRING的例子

    4.1 定義一個Enum類

    public enum Gender {
        MALE,
        FEMALE
    }
    

    4.2 一個Entity

    @Data//自動生成get和set方法
    @Entity
    public class Person{ 
        @Id
        @GeneratedValue
        private Long id;
     
        @Column(nullable = false)
        private String name;
     
        @Column
        @Enumerated(EnumType.STRING)
        private Gender gender;
     
        public Person(String name, Gender gender){
            this.name = name;
            this.gender = gender;
        }
    }
    

    4.3 數據庫中表結構
    在這裏插入圖片描述
    Enum類型字段Gender被映射成VARCHAR(255)類型

    4.4 插入數據

    @Test
    public void insert_data_into_person(){
        personService.save(new Person("Tom", Gender.MALE));
        personService.save(new Person("Joy", Gender.FEMALE));
    }
    

    4.5 查看數據庫中的插入結果
    在這裏插入圖片描述
    表中Gender.MALE對應的就是MALE,Gender.FEMALE對應的就是FEMALE

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章