Enum映射
Jimmer处理枚举有两种方式:
-
映射为字符串:可观察性优先的选择,也是默认的选项。
-
映射为整数:性能优先的选择。
Jimmer提供了两个用于枚举的注解
-
org.babyfish.jimmer.sql.EnumType: 修饰枚举类型,可选指定映射方式,映射为字符串,还是按位置映射为整数
-
org.babyfish.jimmer.sql.EnumItem: 修饰枚举项,可选覆盖某个枚举项被映射后的字符串值或整数值
映射为字符串
- Java
- Kotlin
Gender.java
@EnumType(EnumType.Strategy.NAME)
public enum Gender {
MALE,
FEMALE
}
Gender.kt
@EnumType(EnumType.Strategy.NAME)
enum class Gender {
MALE,
FEMALE
}
这里,@EnumType的参数被指定为"NAME", 表示映射为字符串。默认情况下,两个枚举项映射后的字符串和它们的名字相同,即"MALE"和"FEMALE"。
如果你期望后的字符串和枚举项名称不同,你可以使用@EnumItem修饰枚举项。
- Java
- Kotlin
Gender.java
@EnumType(EnumType.Strategy.NAME)
public enum Gender {
@EnumItem(name = "M")
MALE,
@EnumItem(name = "F")
FEMALE
}
Gender.kt
@EnumType(EnumType.Strategy.NAME)
enum class Gender {
@EnumItem(name = "M")
MALE,
@EnumItem(name = "F")
FEMALE
}
映射为整数
- Java
- Kotlin
Gender.java
@EnumType(EnumType.Strategy.ORDINAL)
public enum Gender {
MALE,
FEMALE
}
Gender.kt
@EnumType(EnumType.Strategy.ORDINAL)
enum class Gender {
MALE,
FEMALE
}