枚举类型字段

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

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

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

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

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

例子:

  1. /**
  2. * 首先定义一个测试的枚举类型
  3. **/
  4. public enum DemoEnum implements EnumInterface {
  5. VALUE1(1, "枚举值1"),
  6. VALUE2(2, "枚举值2");
  7. private DemoEnum(Integer seq, String name) {
  8. this.seq = seq;
  9. this.name = name;
  10. }
  11. private String name;
  12. private int seq;
  13. //枚举名称
  14. @Override
  15. public String getName() {
  16. return name;
  17. }
  18. //枚举描述
  19. @Override
  20. public String getDesc() {
  21. return null;
  22. }
  23. //数字常量
  24. @Override
  25. public Integer getSeq() {
  26. return seq;
  27. }
  28. //国际化时候使用,显示名称的资源key,一般不用
  29. @Override
  30. public String getNameKey() {
  31. return null;
  32. }
  33. //国际化时候使用,枚举描述的资源key,一般不用
  34. @Override
  35. public String getDescKey() {
  36. return null;
  37. }
  38. //必须定义一个Converter,用于存储值和枚举值之间的转换
  39. public static class Converter extends EnumAttributeConverter<DemoEnum> {
  40. @Override
  41. public Class<DemoEnum> getClazz() {
  42. //返回当前枚举类型
  43. return DemoEnum.class;
  44. }
  45. }
  46. }
  47. /**
  48. * 实体类中使用
  49. **/
  50. public class BaseTypeDemo extends BaseEntity {
  51. @DodoField(sortSeq = 13, name = "枚举类型字段")
  52. private DemoEnum enumField;
  53. //......
  54. // 指定属性值转换器
  55. @Convert(converter = DemoEnum.Converter.class)
  56. public DemoEnum getEnumField() {
  57. return enumField;
  58. }
  59. //......

效果图:

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