HasorDB 處理枚舉類型

2021-12-29 14:03 更新

基于枚舉的 name?

枚舉類型的映射無需指定特殊的 ?TypeHandler ?在 HasorDB 中它會自動被處理,具體映射規(guī)則為:

  • 數(shù)據(jù)庫中字段類型必須為 ?字符串?,而字段值內(nèi)容是映射到枚舉的枚舉的 ?name ?上
@Table(mapUnderscoreToCamelCase = true)
public class TestUser {
private UserType userType;

// getters and setters omitted
}

將數(shù)值映射到枚舉?

將數(shù)值類型映射成為枚舉值,需要枚舉類型實(shí)現(xiàn)? net.hasor.db.types.EnumOfValue? 接口。

public enum LicenseEnum implements EnumOfValue<LicenseEnum> {
Private(0),
AGPLv3(1),
GPLv3(2),
;

private final int type;

LicenseEnum(int type) {
this.type = type;
}

public int codeValue() {
return this.type;
}

public LicenseEnum valueOfCode(int codeValue) {
for (LicenseEnum item : LicenseEnum.values()) {
if (item.getType() == codeValue) {
return item;
}
}
return null;
}
}

將Code映射到枚舉?

?Code ?是一個(gè)字符串值,區(qū)別于枚舉的 ?name ?屬性,它可以由用戶自定義規(guī)則。從而不再擔(dān)心枚舉元素的變更。

將 Code 類型映射成為枚舉值,需要枚舉類型實(shí)現(xiàn) ?net.hasor.db.types.EnumOfCode? 接口。

public enum LicenseEnum implements EnumOfCode<LicenseEnum> {
Private("Private"),
AGPLv3("AGPLv3"),
GPLv3("GPLv3"),

private final String type;

LicenseEnum(String type) {
this.type = type;
}

public String codeName() {
return this.type;
}

public LicenseEnum valueOfCode(String codeValue) {
for (LicenseEnum item : LicenseEnum.values()) {
if (item.codeName().equalsIgnoreCase(codeValue)) {
return item;
}
}
return null;
}
}


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號