SpringBoot和MyBatisPlus中枚举自动转换
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
yml配置
mybatis-plus:
#扫描,多个package用逗号或者分号分隔
typeEnumsPackage: io.renren.modules.*.enums
使用方法
-
使用枚举
@EnumValue
@Getter public enum UserType{ BACKEND(1, "后台"), FRONT(2, "前台"), ; @JsonCreator UserType(Integer val, String desc) { this.val = val; this.desc = desc; } @EnumValue private final Integer val; @JsonValue private final String desc; }
-
实现接口
IEnum<T>
@Getter public enum UserType implements IEnum<Integer> { BACKEND(1, "后台"), FRONT(2, "前台"), ; @JsonCreator UserType(Integer val, String desc) { this.val = val; this.desc = desc; } private final Integer val; @JsonValue private final String desc; @Override public Integer getValue() { return val; } }
三、可能存在的问题
如果数据库中使用的tinyint(1)
那么在mybatis
将会映射为boolean
,使用Integer
作为枚举类的值会映射失败,一值为Null
,解决方法是使用tinyint(4)
,因为tinyint(1)
和tinyint(4)
占用的空间是一样,故没有影响。