MybatisPlus枚举类的应用与转换
一、枚举类的应用
现在有个类User,User中有属性Status,那么我们可以设置一个枚举类UserStatusEnum来设定这个status。
在status中我们会设置一个值val(整形)用于标识当前枚举的实际状态,一个introduction(String类型,用于描述枚举的信息)
此时,如果我们要将user的某个实例存入数据库中,就会出现问题。
一般而言我们会去定义status为整形静态常量,这样可以很方便将user进行存入。
现在修改status为单独的enum类,现在存入遇到问题,可以使用MP进行解决。
首先需要在配置文件中写入
mybatis-plus: configuration:default-enum-type-handler: com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler
来开启枚举注解
然后在对应的enum类中,对枚举类的值进行标记(标记值用于数据库的读取):
@Getter
public enum UserStateEnum {NORMAL(1,"正常状态"),FREEZE(2,"冻结状态"),;@EnumValueprivate final int val;@JsonValueprivate final String description;UserStateEnum(int val, String description) {this.val = val;this.description = description;}
}
总结:
要引入enum类,MP需要:
1.先引入配置文件
2.标记enum类中对应的值,用于数据库的存取
二、Jason字符串与类的转换
User类中有个info 属性,用于描述用户的年龄、基本介绍以及性别,现在这个属性需要以jason格式来进行存储,显然我们自行定义jason格式就会很麻烦。
所以引入MP的类型转换功能:
1.将原本的String info 转换为UserInfo info。也就是自行定义一个类,类中属性包含年龄、基本介绍以及性别。
2.使用MP的注解来使其能够正确转换:@TableFiled(typeHandler = JacksonTypeHandler.class)
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@TableName(value = "user",autoResultMap = true)
public class User {@TableId(type = ASSIGN_ID)Long id;String username;String password;String phone;@TableField(typeHandler = JacksonTypeHandler.class)UserInfo info;UserStateEnum status;Double balance;LocalDateTime createTime;LocalDateTime updateTime;
}