SpringBoot通过Mybatis-Plus实现通用枚举的自动注入

项目场景

在设计数据库时,一些字段通常会使用int类型来代替一些字符串类型
例如:性别(gender),通常使用int(1)来设计


问题描述

      问题:如果实体的字段使用Integer类型的时候,那么无法保证新增时传入的参数是1或2。为了在输入时对数据进行自由定制,同时在显示时可以使用我们希望的文字。Mybatis-Plus的通用枚举就是为了解决这样的场景。我们在实体类中使用枚举类型来限制输入值的类型:

public class User {
    
    
    private String name;
    /**
     * 使用枚举类型来限制输入值
     */
    private GenderEnum gender;
    private AgeEnum age;
}

解决方案

1、配置扫描通用枚举
      路径为枚举类所在包路径,package命名时注意不能使用enum关键字命名

// 配置文件 resources/application.properties
mybatis-plus.type-enums-package=com.xxx.rmp.enums

2、创建枚举类
      有两种方式:1)通过实现IEnum接口 2)使用@EnumValue注解

//方式一:枚举实现IEnum接口
///通过getValue()方法,告诉Mybatis-Plus,枚举类的真正的value是什么,这样就实现了自由定制。
public enum AgeEnum implements IEnum<Integer> {
    
    
  ONE(1, "一岁"),
  TWO(2, "二岁"),
  THREE(3, "三岁");

  private int value;
  private String desc;

  AgeEnum(final int value, final String desc) {
    
    
    this.value = value;
    this.desc = desc;
  }

  @Override
  public Integer getValue() {
    
    
    return value;
  }
}

//方式二:使用@EnumValue注解
//通过@EnumValue注解,告诉Mybatis-Plus, 枚举类的真正的value是什么,同样也就实现了自由定制。
@Getter
public enum GradeEnum {
    
    

    PRIMARY(1, "小学"),
    SECONDORY(2, "中学"),
    HIGH(3, "高中");

    GradeEnum(int code, String descp) {
    
    
        this.code = code;
        this.descp = descp;
    }

    @EnumValue
    private final int code;
    private final String descp;
}

猜你喜欢

转载自blog.csdn.net/yang_girl/article/details/109059227
今日推荐