Mybatis的Enum类型转换器

本文探讨了在MyBatis中处理枚举类型时遇到的问题及解决方案,详细介绍了MyBatis如何通过EnumTypeHandler和EnumOrdinalTypeHandler两种类型处理器来处理枚举类型的转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        今天朋友遇到这么一个问题:使用Mybatis进行Enum类型数据读取的时候,出现了异常。报错:找不到此枚举类型。我之前正好使用过mybatis 保存枚举类型的经验。

        之前我用mybatis保存项目中的枚举类型的值,保存到数据库中是以字符串形式的,而朋友保存的是枚举类型,导致出现了异常。为什么使用字符串就可以呢?我也是百思不得其解。后来查资料结合阅读源码,总算明白了。

mybatis对于Enum类型的处理,有默认的类型转换器。以下为转载:

MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,Java对象将通过ps.setInt、ps.setString、ps.setTimeStamp等方法转换成数据库需要的数据

在从结果集(ResultSet)中取出一个值时,将使用rs.getInt、rs.getString、rs.getTimeStamp等方法将数据转换为Java对象

这两类操作通过 类型处理器 完成

  • 类型处理器均实现 TypeHandler<T> 接口,所有基本类型均有对应的类型处理器

  • Enum对应有两个类型处理器,分别为 EnumTypeHandler 、EnumOrdinalTypeHandler

    若需将Enum字段映射为字符串,则使用 EnumTypeHandler 。 (默认使用)

    若需将Enum字段映射为int数值,则使用 EnumOrdinalTypeHandler


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值