自动映射枚举
MongoPlus提供了灵活的枚举映射,只需要对枚举进行声明,即可实现枚举的自动映射
未声明的枚举则使用枚举的name进行映射
java
public class User {
private String name; // 名字
private AgeEnum age; // 年龄
private GradeEnum grade; // 年级
}
创建映射器,并注册成Bean
java
import com.mongoplus.annotation.comm.EnumValue;
import com.mongoplus.mapping.FieldInformation;
import com.mongoplus.strategy.mapping.MappingStrategy;
import com.mongoplus.toolkit.EnumUtil;
/**
* 枚举映射策略
*
* @author anwen
*/
@SuppressWarnings({"rawtypes"})
@Component
public class EnumMappingStrategy implements MappingStrategy<Enum> {
@Override
public Object mapping(Enum fieldValue) throws IllegalAccessException {
FieldInformation fieldInformation = EnumUtil.getFieldInformation(fieldValue);
if (fieldInformation == null) {
return fieldValue.name();
}
EnumValue enumValue = fieldInformation.getAnnotation(EnumValue.class);
if (enumValue.valueStore()){
return fieldInformation.getValue(fieldValue);
}
return fieldValue.name();
}
}
枚举声明
枚举属性使用 @EnumValue
注解,指定枚举值在数据库中存储的实际值。支持枚举类中的任意字段,如序号或编码。
java
@Getter
@AllArgsConstructor
public enum GradeEnum {
PRIMARY(1, "小学"),
SECONDARY(2, "中学"),
HIGH(3, "高中");
@EnumValue // 标记数据库存的值是code
private final int code;
// 其他属性...
}
通过以上简单步骤,你可以优雅地在 MongoPlus 中使用枚举属性,并且能够方便地将枚举值序列化为前端所需的格式。