欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

Mybatis-plus通用枚举

时间:2023-06-12

通用枚举的配置可以优化代码,增强代码的可读性

效果:插入时:前端传递枚举属性code值 0,1,2 或者 枚举字面量 或者枚举属性message值 下架,发布中,暂存,数据库保存0,1,2,查询时:返回json数据 下架,发布中,暂存。

①声明通用枚举属性,使用@EnumValue标记数据库存的值,使用@JsonValue标记响应前端json的值

import com.baomidou.mybatisplus.annotation.EnumValue;import com.fasterxml.jackson.annotation.JsonValue;import lombok.Getter;import lombok.extern.slf4j.Slf4j;@Getter@Slf4jpublic enum ReleaseStatusEnum { DOWN(0, "下架"), PUBLISHING(1, "发布中"), TEMP_SAVE(2, "暂存"); ReleaseStatusEnum(Integer code, String message) { this.code = code; this.message = message; } @EnumValue private final Integer code; @JsonValue private final String message;}

 ②配置扫描通用枚举,两种方式任选其一即可

mybatis-plus.type-enums-package=com.xxx.localdemo.web.*.*mybatis-plus.configuration.default-enum-type-handler=com.baomidou.mybatisplus.extension.handlers.MybatisEnumTypeHandler

③如果使用枚举接收前端传递的参数,需要声明反序列化类继承JsonDeserializer<>,重写deserialize方法,使用@JsonDeserialize(using = ReleaseStatusEnum .Deserializer.class)标记反序列化规则。

public static class Deserializer extends JsonDeserializer { @Override public ReleaseStatusEnum deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException { String text = jsonParser.getText(); try { for (ReleaseStatusEnum releaseStatusEnum : ReleaseStatusEnum.values()) { if (releaseStatusEnum.getCode().equals(Integer.valueOf(text))) { return releaseStatusEnum; } } return null; } catch (Exception e) { log.warn("反序列化枚举类出错", e); return null; } } }

@JsonDeserialize(using = ReleaseStatusEnum.Deserializer.class) private ReleaseStatusEnum releaseStatus;

效果如图:

前端参数转换

 存入数据库的值

 查询展示到前端的数据

 

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。