Skip to content

高级用法

王爵 nice edited this page Sep 18, 2018 · 2 revisions

枚举类型

如果你在一个数据库实体中想用枚举来和数据库的字段相匹配,Anima 做了一定的支持。假设有一个表 persons,其中包含一个字段 vip_level, 对应的枚举类型如下:

@Getter
@EnumMapping("code")
public enum VipLevel {

    VIP1(1, "初级会员"),
    VIP2(2, "高级会员"),
    VIP3(3, "至尊会员");

    private int    code;
    private String desc;

    VipLevel(int code, String desc) {
        this.code = code;
        this.desc = desc;
    }

}

Person 实体如下:

@Data
public class Person extends Model {

    private String name;

    @Column(name = "sex")
    private Gender gender;

    private VipLevel vipLevel;

}

在实体中只是正常使用枚举变量即可,需要注意的是在枚举类型上面添加了一个注解 EnumMapping。 该注解用于标识枚举中的哪个字段会存储在数据库中,因为枚举的构造函数是可以有多个入参的,所以框架无法确定谁是存储在数据库中的, 使用注解明确指定枚举中的 变量名 即可。

自定义转换器

如果你觉得默认内置的转换器无法满足你的需求,可以自定义转换器,使用如下方法:

Anima.open("").addConverters(new YoutConverter());