最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JPA+Enum枚舉實現(xiàn)步驟流程

 更新時間:2025年10月16日 14:27:57   作者:匍匐前進の程序猿  
本文介紹了如何在Java中創(chuàng)建學生實體類及Sex枚舉類,并通過@JsonValue注解實現(xiàn)枚舉序列化,使用JPA的@Converter及AttributeConverter完成枚舉與數(shù)據(jù)庫字段的轉換,最后通過controller層進行新增與查詢測試

1.創(chuàng)建實體類(學生實體,Sex枚舉類)

@Data
@Table
@Entity
public class Student {
	@Id
	@GeneratedValue(generator = "uuid")
	@GenericGenerator(name = "uuid",strategy = "org.hibernate.id.UUIDGenerator")
	private String id;
	private String name; // 姓名
	private Sex sex; // 性別
}

使用@JsonValue來標記枚舉想要返回的序列化值

注意:建議枚舉的編碼不要使用數(shù)字

public enum Sex { // 性別
    GIRL("FM","女"),BOY("M","男");

    private String code;
    private String sName;
    
    Sex(String code,String sName) {
        this.code = code;
        this.sName = sName;
    }
    
    public String getCode() {
        return code;
    }
   /**
     * 將數(shù)據(jù)庫查詢到編碼自動轉為文字返回給前端
     */
    @JsonValue
    public String getsName() {
        return sName;
    }
}

2.創(chuàng)建Converter(屬性轉換器)

  • @Converter注解的作用是告訴JPA這是一個屬性轉換器
  • autoApply =true的作用是表示這是一個全局的屬性轉換器,也就是說這個轉換器對所有的實體類都起作用
  • AttributeConverter<需要被轉換的enum,與數(shù)據(jù)庫表字段對應的java類型>
@Converter(autoApply = true)
public class SexConverter implements AttributeConverter<Sex, String> {
    /**
     * 此方法告訴jpa,數(shù)據(jù)庫里存的值,即插入和更新操作時執(zhí)行;
     */
    @Override
    public String convertToDatabaseColumn(Sex sex) {
        if(sex == null){
            return null;
        }
        return sex.getCode(); // 此處存儲的是編碼
    }

    /**
     * 此方法告訴Java從數(shù)據(jù)庫里取出的值對應的是哪個enum值,即查詢操作時執(zhí)行。
     */
    @Override
    public Sex convertToEntityAttribute(String code) {
         if(code == null){
            return null;
        }
        for (Sex sex : Sex.values()) {
            if(sex.getCode().equals(code)){
                return sex; // 獲取到當前Sex信息
            }
        }
        throw new IllegalArgumentException(); // 或者給個默認的enum eg: return Category.UNKNOWN
    }
}

3.創(chuàng)建controller層

@RestController
@RequestMapping("/student")
public class StudentController {
	@Autowired private StudentRepo repo;
	
	@PostMapping(path = "/save")
	public Student save(@RequestBody Student student) {
		repo.save(student);
		return student;
	}
	
	@GetMapping(path = "/list")
	public List<Student> list() {
		return repo.findAll();
	}
}

當需要在后端使用時,用此方法–>Sex.GIRL/Sex.BOY

4.數(shù)據(jù)庫表,測試

新增測試

查詢測試

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 處理Log4j2不能打印行號的問題(AsyncLogger)

    處理Log4j2不能打印行號的問題(AsyncLogger)

    這篇文章主要介紹了處理Log4j2不能打印行號的問題(AsyncLogger),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java Objects工具類原理及用法詳解

    Java Objects工具類原理及用法詳解

    這篇文章主要介紹了Java Objects工具類原理及用法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • Spring AOP在web應用中的使用方法實例

    Spring AOP在web應用中的使用方法實例

    這篇文章主要給大家介紹了關于Spring AOP在web應用中的使用方法,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Spring AOP具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-12-12
  • 教你在JNA中將本地方法映射到JAVA代碼中的示例

    教你在JNA中將本地方法映射到JAVA代碼中的示例

    對于JNI來說,我們可以使用native關鍵字來定義本地方法。那么在JNA中有那些在JAVA代碼中定義本地方法的方式呢?對JNA本地方法映射JAVA代碼的相關知識感興趣的朋友一起看看吧
    2022-04-04
  • SpringBoot Mybatis 配置文件形式詳解

    SpringBoot Mybatis 配置文件形式詳解

    這篇文章主要介紹了SpringBoot Mybatis 配置文件形式詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • java求數(shù)組第二大元素示例

    java求數(shù)組第二大元素示例

    這篇文章主要介紹了java求數(shù)組第二大元素示例,需要的朋友可以參考下
    2014-04-04
  • java實現(xiàn)解析json復雜數(shù)據(jù)的第三種思路詳解

    java實現(xiàn)解析json復雜數(shù)據(jù)的第三種思路詳解

    這篇文章主要為大家信息介紹了java實現(xiàn)解析json復雜數(shù)據(jù)的第三種思路,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-01-01
  • Java并發(fā)編程之CountDownLatch源碼解析

    Java并發(fā)編程之CountDownLatch源碼解析

    這篇文章主要介紹了Java并發(fā)編程之CountDownLatch源碼解析,文中有非常詳細的代碼示例,對正在學習java并發(fā)編程的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-04-04
  • SpringBoot?Redis清除所有的key的實現(xiàn)方法

    SpringBoot?Redis清除所有的key的實現(xiàn)方法

    本文主要介紹了SpringBoot?Redis清除所有的key的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-05-05
  • CentOS7和8中安裝Maven3.8.4的簡單步驟

    CentOS7和8中安裝Maven3.8.4的簡單步驟

    maven是屬于apache的一個工具,主要是對java進行編譯打包,解決依賴關系,下面這篇文章主要給大家介紹了關于CentOS7和8中安裝Maven3.8.4的相關資料,需要的朋友可以參考下
    2022-04-04

最新評論

临朐县| 交城县| 泸水县| 邹城市| 潮安县| 德庆县| 雅安市| 新化县| 英山县| 元谋县| 屏东县| 乐至县| 沁阳市| 杭锦旗| 贺兰县| 湟源县| 若尔盖县| 辰溪县| 霍邱县| 甘德县| 自治县| 福建省| 达尔| 贵定县| 台山市| 平山县| 钟祥市| 无极县| 紫金县| 江源县| 花垣县| 吐鲁番市| 荥经县| 新疆| 嘉鱼县| 玛曲县| 安乡县| 曲松县| 浦江县| 措美县| 阜平县|