枚举属性的显示是一件很麻烦的事情
MyBatis-Plus 扩展可以很好解决这个问题
但是网上教程有些地方都是一笔带过并且给出两种方案
这篇文章针对 fastJson模式
1、声明通用枚举属性
使用 @EnumValue 注解枚举属性
@Getter
public enum AssignMethodTypeEnum {
NO_ASSIGN(0, "未派发"),
SYS(1, "系统派发"),
MANUAL(2, "人工派发");
@EnumValue //标记数据库存的值是code
private final Integer code;
private final String desc;
/** 枚举中复写toString方法, 就是指的这个!!! */
@Override
public String toString() {
return desc;
}
}
实体类
@Data
public class PickingGoodsDTO {
/** 派发方式 {@link com.erpadmin.servant.base.enums.picking.AssignMethodTypeEnum} */
@JSONField(serialzeFeatures= SerializerFeature.WriteEnumUsingToString)
public AssignMethodTypeEnum assignMethodType;
}
2、配置扫描通用枚举
自定义属性配置
@Configuration
public class MybatisPlusAutoConfiguration {
@Bean
public MybatisPlusPropertiesCustomizer mybatisPlusPropertiesCustomizer() {
// 序列化枚举值为数据库存储值
FastJsonConfig config = new FastJsonConfig();
config.setSerializerFeatures(SerializerFeature.WriteEnumUsingToString);
return properties -> {
GlobalConfig globalConfig = properties.getGlobalConfig();
globalConfig.setBanner(false);
MybatisConfiguration configuration = new MybatisConfiguration();
configuration.setDefaultEnumTypeHandler(MybatisEnumTypeHandler.class);
properties.setConfiguration(configuration);
};
}
}
然后在枚举中复写 toString方法即可。
这个网上基本上都是一笔带过,请查看枚举类里面的tostring