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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通