mybatis-plus的EnumOrdinalTypeHandler
1、问题背景:
之前项目使用的是mybatis 3.5.7,现在集成了mybatis-plus 3.4.2。
2、问题描述:
程序启动时报错误,截图如下:

从字面意思上看,就是数据库表对应的实体中,某些字段是枚举字段,这个枚举无法和数据库保存的数据映射,数据库存储的是枚举的序列号,该枚举是原生的枚举,代码如下:
public enum FileStoreTypeEnum{
NFS,
OSS,
HUAWEI_CLOUD,
ALI_CLOUD;
}
3、问题分析
肯定是引入的mybatis-plus的枚举处理类发生了变化,所以无法从序列号转换成对应的枚举值,从错误截图可以看出,
当前版本的mybatis-plus的默认枚举处理类是org.apache.ibatis.type.EnumTypeHandler,而不是原先的EnumOrdinalTypeHandler,但是项目代码中都是这种原生枚举的使用,所以处理失败。
4、问题解决
mybatis-plus有一个默认的枚举类处理器配置项,我们将其默认的处理器配置为EnumOrdinalTypeHandler即可,如下:
mybatis-plus:
configuration:
default-enum-type-handler: org.apache.ibatis.type.EnumOrdinalTypeHandler

浙公网安备 33010602011771号