99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

MyBatis-Plus 擴(kuò)展-通用枚舉

2022-03-25 13:48 更新

解決了繁瑣的配置,讓 mybatis 優(yōu)雅的使用枚舉屬性!

自3.1.0開(kāi)始,如果你無(wú)需使用原生枚舉,可配置默認(rèn)枚舉來(lái)省略掃描通用枚舉配置

  • 升級(jí)說(shuō)明:

3.1.0 以下版本改變了原生默認(rèn)行為,升級(jí)時(shí)請(qǐng)將默認(rèn)枚舉設(shè)置為?EnumOrdinalTypeHandler ?

  • 影響用戶(hù):

實(shí)體中使用原生枚舉

  • 其他說(shuō)明:

配置枚舉包掃描的時(shí)候能提前注冊(cè)使用注解枚舉的緩存

1、聲明通用枚舉屬性

  • 方式一: 使用 ?@EnumValue? 注解枚舉屬性

public enum GradeEnum {

    PRIMARY(1, "小學(xué)"),  SECONDORY(2, "中學(xué)"),  HIGH(3, "高中");

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

    @EnumValue//標(biāo)記數(shù)據(jù)庫(kù)存的值是code
    private final int code;
    //。。。
}

  • 方式二: 枚舉屬性,實(shí)現(xiàn) ?IEnum接口如下:

public enum AgeEnum implements IEnum<Integer> {
    ONE(1, "一歲"),
    TWO(2, "二歲"),
    THREE(3, "三歲");

    private int value;
    private String desc;

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

  • 實(shí)體屬性使用枚舉類(lèi)型

public class User {
    /**
     * 名字
     * 數(shù)據(jù)庫(kù)字段: name varchar(20)
     */
    private String name;

    /**
     * 年齡,IEnum接口的枚舉處理
     * 數(shù)據(jù)庫(kù)字段:age INT(3)
     */
    private AgeEnum age;


    /**
     * 年級(jí),原生枚舉(帶{@link com.baomidou.mybatisplus.annotation.EnumValue}):
     * 數(shù)據(jù)庫(kù)字段:grade INT(2)
     */
    private GradeEnum grade;
}

2、配置掃描通用枚舉

  • 配置文件 ?resources/application.yml?

mybatis-plus:
    # 支持統(tǒng)配符 * 或者 ; 分割
    typeEnumsPackage: com.baomidou.springboot.entity.enums
  ....

  • 自定義配置類(lèi) ?MybatisPlusAutoConfiguration?


@Configuration
public class MybatisPlusAutoConfiguration {

    @Bean
    public MybatisPlusPropertiesCustomizer mybatisPlusPropertiesCustomizer() {
        return properties -> {
            GlobalConfig globalConfig = properties.getGlobalConfig();
            globalConfig.setBanner(false);
            MybatisConfiguration configuration = new MybatisConfiguration();
            configuration.setDefaultEnumTypeHandler(MybatisEnumTypeHandler.class);
            properties.setConfiguration(configuration);
        };
    }
}

如何序列化枚舉值為數(shù)據(jù)庫(kù)存儲(chǔ)值?

Jackson

  • 重寫(xiě) ?toString ?方法

springboot:

    @Bean
    public Jackson2ObjectMapperBuilderCustomizer customizer(){
        return builder -> builder.featuresToEnable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING);
    }

jackson:

    ObjectMapper objectMapper = new ObjectMapper();
    objectMapper.configure(SerializationFeature.WRITE_ENUMS_USING_TO_STRING, true);

以上兩種方式任選其一,然后在枚舉中復(fù)寫(xiě) ?toString方法即可。

  • 注解處理

public enum GradeEnum {

    PRIMARY(1, "小學(xué)"),  SECONDORY(2, "中學(xué)"),  HIGH(3, "高中");

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

    @EnumValue
  	@JsonValue	//標(biāo)記響應(yīng)json值
    private final int code;
}

Fastjson

  • 重寫(xiě) ?toString方法

全局處理方式

    FastJsonConfig config = new FastJsonConfig();
    config.setSerializerFeatures(SerializerFeature.WriteEnumUsingToString);

局部處理方式

    @JSONField(serialzeFeatures= SerializerFeature.WriteEnumUsingToString)
    private UserStatus status;

以上兩種方式任選其一,然后在枚舉中復(fù)寫(xiě) ?toString方法即可。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)