问题描述:存在一个实体类,类中一字段在数据库中以int类型存储,前端显示以string类型展示。
环境:Mybatis-Plus框架
1、创建一个具有两个变量的枚举,int用来映射数据库字段,string用来前端显示。
这里不要使用类注解去实现getter方法。
2、实体类和数据库字段映射
在不处理的情况下,字段无法映射,累心不匹配;
3、解决方法;两个注解:@EnumValue @JsonValue
@EnumValue :将标注的变量的类型作为整个枚举的类型;
在code变量上标注,那么整个枚举就是int类型的;枚举定义的实体也就是int类型的。
反之在name上,对应的实体字段就是string类型的。
数据库用int或者varchar对应就可以了。
4、那么我们映射了code变量,在不做处理时,数据库返回给我们的字段值就是int类型的,不会是string。
@JsonValue 序列化注解;将标注的变量序列化出来。
数据返回时将string类型变量序列化出来,拿到的就是string类型的值。
综上:只需要在枚举类中使用这两个注解设置你映射的类型,和你要拿到的类型即可。
枚举具体代码如下:
public enum VersionType {
In_Force_Version(0,"现行版本"),
Historical_Version(1,"历史版本"),
Unconfirmed_Version(2,"待确认版本");
@EnumValue //指定映射对象
private final int code;
private final String name;
VersionType(int code, String name) {
this.code = code;
this.name = name;
}
public int getCode() {
return code;
}
@JsonValue //指定序列变量
public String getName() {
return name;
}
}