枚举类型字段

枚举类型的字段,需要实现 EnumInterface 接口来被代码生成引擎所识别。

dodo采用枚举类型最佳实践:

(1)数据库字段生成为int类型,保存自定义的枚举类型数字常量:getSeq(),而非ordinal()

(2)@ResponseBody 的返回对象中,包括枚举类型的字段时,自动被转化为数字常量:getSeq(),而非枚举类型的ordinal()name()

(3)枚举值在页面中,将会以下拉列表方式展示

例子:

/**
 * 首先定义一个测试的枚举类型
 **/
public enum DemoEnum implements EnumInterface {
    VALUE1(1, "枚举值1"), 
    VALUE2(2, "枚举值2");
    private DemoEnum(Integer seq, String name) {
        this.seq = seq;
        this.name = name;
    }

    private String name;
    private int    seq;

    //枚举名称
    @Override
    public String getName() {
        return name;
    }

    //枚举描述
    @Override
    public String getDesc() {
        return null;
    }

    //数字常量
    @Override
    public Integer getSeq() {
        return seq;
    }

    //国际化时候使用,显示名称的资源key,一般不用
    @Override
    public String getNameKey() {
        return null;
    }

    //国际化时候使用,枚举描述的资源key,一般不用
    @Override
    public String getDescKey() {
        return null;
    }

    //必须定义一个Converter,用于存储值和枚举值之间的转换
    public static class Converter extends EnumAttributeConverter<DemoEnum> {
        @Override
        public Class<DemoEnum> getClazz() {
            //返回当前枚举类型
            return DemoEnum.class;
        }
    }
}

/**
 * 实体类中使用
 **/
public class BaseTypeDemo extends BaseEntity {
    @DodoField(sortSeq = 13, name = "枚举类型字段")
    private DemoEnum          enumField;

    //......
    // 指定属性值转换器
    @Convert(converter = DemoEnum.Converter.class)
    public DemoEnum getEnumField() {
        return enumField;
    }

    //......

效果图:

DML 登录图片 @ResponseBody 枚举值 登录图片

Copyright © DodoFramework 2020 all right reservedModify At: 2020-10-28 00:09:35