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
posted @ 2022-11-02 14:12  浪迹天涯的派大星  阅读(572)  评论(0)    收藏  举报