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 @   浪迹天涯的派大星  阅读(458)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示