🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 枚举 BeetlSQL3默认情况会调用枚举的name方法转化为字符串,存入数据库。当从数据库取出字符串的时候,调用枚举的valueOf方法得到其枚举 ```java public class UserData{ @AutoID Integer id; Name name; } /*使用枚举名存库*/ enum Name{ Li, Zhang; } ``` BeetlSQL3也支持自定义枚举存入数据库的值,使用@EnumValue标注在枚举的属性字段上,如下枚举Name2,取值是属性`str` ```java public enum Name2{ Li("li"), Zhang("zhang"); @EnumValue String str; Name2(String str){ this.str = str; } public String getStr() { return str; } public void setStr(String str) { this.str = str; } } ``` 如果枚举来自第三方,无法使用@EnumValue,则可以使用@EnumMapping,如上Name2如果来自第三方,则可以在POJO中@EnumValue ```java @Table(name="sys_user") @Data public static class UserData3{ @AutoID Integer id; @EnumMapping("str") Name2 name; } ``` > 关于枚举,可以参考源码单元测试EnumSelectTest BeetlSQL 也提供了 SQLManagerExtend可以扩展对枚举的操作,只需要设置一个自定义的`EnumExtend` ,默认实现如下 ```java public class EnumExtend { public Enum getEnumByValue(Class c, Object value) { return EnumKit.getEnumByValue(c,value); } public Object getValueByEnum(Object en) { return EnumKit.getValueByEnum(en); } } ``` EnumKit会解析@EnumValue注解或者@EnumMapping注解