Mybatis的Enum类型转换器

来源:互联网 发布:淘宝纸店铺招牌图片 编辑:程序博客网 时间:2024/05/23 00:07

        今天朋友遇到这么一个问题:使用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


0 0
原创粉丝点击