fastjson+mybatis-plus中枚举类的使用
在使用mybaits-plus中(官网链接:链接)的时候,有个枚举类的功能的十分常见,因为在实际开发中,少不了约定一些状态码以及特殊含义的数字等,这就与枚举类中的意义相同,fastjson+mybatis-plus可以让实际开发中
- 动态转换成相应的描述,无需进行显式、重复的状态转换
- 约定需修改时,也方便统一修改
一、 定义枚举类
- 要点
- 建议实现
IEnum<T>
接口 @EnumValue
标记在数据库存的字段上,下述例子数据存的就是 code字段,即 0,1- 重写
toString
方法,返回相应的描述,这个在序列化时会替换成这个描述
package com.example.demo.user.enumClass;
import com.baomidou.mybatisplus.annotation.EnumValue;
import com.baomidou.mybatisplus.core.enums.IEnum;
/**
* Create by Lingo
*/
//@JSONType(serializeEnumAsJavaBean = true)
public enum GenderEnum implements IEnum<Integer> {
MALE(1,"男"),
FEMALE(0,"女");
@EnumValue
private final int code;
private final String descp;
GenderEnum(int code, String descp) {
this.code = code;
this.descp = descp;
}
@Override
public String toString() {
return this.descp;
}
@Override
public Integer getValue() {
return code;
}
}
二、 定义实体类
- 要点
- 实现
Serializable
接口,以便可以序列化 - 需要转换的字段的类型应该是 枚举类,而不是数据库的类型,如本例的 gender 数据库的类型是
tinyint(1)
,而定义的时候类型是GenderEnum
- 需要转换的字段应加入
@JSONField(serialzeFeatures= SerializerFeature.WriteEnumUsingToString)
注解,以便进行局部设置
package com.example.demo.user.entity;
import com.alibaba.fastjson.annotation.JSONField;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.example.demo.user.enumClass.GenderEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import ja