项目场景
在设计数据库时,一些字段通常会使用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;
}