MyBatis内置了两个枚举转换器分别是:org.apache.ibatis.type.EnumTypeHandler和org.apache.ibatis.type.EnumOrdinalTypeHandler。
EnumTypeHandler是默认的枚举转换器,该转换器将枚举实例转换为实例名称的字符串。比如有个枚举
NO_RECOVERY(10),使用EnumTypeHandler保存在数据库中的就是“NO_RECOVERY”
EnumOrdinalTypeHandler这个转换器将枚举实例的ordinal属性作为取值(从0依次取值)。还是上面的例子用这种转换器保存在数据库中的值就是0。
如果我们想保存枚举本身所定义的code值呢?这就需要自定义一个类型转换器,自定义一个int类型保存在数据库,即insert时枚举转换为int型数据保存在数据库,select时数据库中的int值转换成实
体类的枚举类型。
一、自定义公共父接口
public interfaceBaseCodeEnum {intgetCode();
}
二、改造枚举, 需要转换的枚举类实现BaseCodeEnum接口
public enum RecoverType implementsBaseCodeEnum {
NO_RECOVERY(10),
RECOVERY(11),
PROTECT(12);intvalue;
RecoverType(intvalue){this.value =value;
}
@Overridepublic intgetCode() {returnvalue;
}
}public enum TunnelType implementsBaseCodeEnum {<