MybatisPlus 通用枚举的使用
1、声明通用枚举属性
- 方式一: 使用 @EnumValue 注解枚举属性
/**
* @author liuhongjun
*/
@Getter
@AllArgsConstructor
public enum StatusEnum {
SHOW(1, "显示"),
HIDE(2, "隐藏");
@EnumValue // 标记数据库存的值是code
@JsonValue // 标记响应json值
private Integer code;
private String descp;
- 方式二: 枚举属性,实现 IEnum 接口如下:
//MP提供的接口
public interface IEnum<T extends Serializable> {
T getValue();
}
/**
* @author liuhongjun
*/
@Getter
@AllArgsConstructor
public enum StatusEnum implements IEnum<Integer>{
SHOW(1, "显示"),
HIDE(2, "隐藏");
private Integer code;
private String descp;
@Override
public Integer getValue() {
return this.code; // 标记数据库存的值是code
}
2、配置枚举包扫描
# MP 配置
# 3.0.8之前版本问题默认将枚举注册为EnumOrdinalTypeHandler,这是错误的方式,
# 默认是 org.apache.ibatis.type.EnumTypeHandler
# 如果项目之中实体统一使用IEnum或注解的方式,
# 可配置成 com.baomidou.mybatisplus.extension.handlers.EnumTypeHandler,也可省略上面的type-enums-package配置
# 配置type-enums-package只对注解方式的枚举处理能提前加载缓存.
mybatis-plus:
# 设置存放枚举类的包 ,支持统配符 * 或者 ; 分割
type-enums-package: com.mp.sampleenum.enums
configuration:
default-enum-type-handler: org.apache.ibatis.type.EnumOrdinalTypeHandler
3、实体类中属性使用枚举类
public class User {
/**
* 名字
* 数据库字段: name varchar(20)
*/
private String name;
/**
* 状态
* 数据库字段:status INT(3)
*/
private StatusEnum status;
}