1.准备:
(1)定义枚举:enums.UserStatus
(2)添加@EnumValue注解(mp知道该把哪个值往数据库中写)
package enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
public enum UserStatus {
NORMAL(1,"正常"),
FROZEN(2,"冻结"),
;
@EnumValue
private final int value;
private final String desc;
UserStatus(int value,String desc) {
this.value = value;
this.desc = desc;
}
public int getValue() {
return value;
}
public String getDesc() {
return desc;
}
}
2.配置枚举处理器
在application.yaml文件中添加配置:
1 mybatis-plus:
2 configuration:
3 default-enum-type- 4
4 handler:com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler
3.代替User实体中对应状态字段
private Integer status;==>private UserStatus status;
4.改变UserServiceImpl类中相关报错点,将数字用枚举名称代替
5.把用于数据展示的UserVO类对应status字段也改成枚举类型
Warning: 此时出现问题,用postman做查询功能时status返回值为NORMAL
Reason: 枚举默认做json处理以枚举项英文名称返回。
Desc:程序数据往前端返回是由springmvc处理,springmvc底层以JackJson包处理Json数据。
Solution:JackJson用一些注解标记枚举里的值究竟把谁返回。注解标记为:@JsonValue,加哪个字段上,就返回谁的值。