mybatis-plus自定义数值类型枚举类转换器
MyBatis 内置了大部分基本类型的类型处理器,TypeHandler 类型处理器用于 JavaType 与 JdbcType 之间的转换。
所以对于基本类型可以直接处理,比如默认的这些IntegerTypeHandler,BigDecimalTypeHandler基本上不会去碰她。
当我们需要处理其他类型的时候,比如枚举类型,mybaits依然服务周到,提供两个常用的。
EnumOrdinalTypeHandler
每个枚举类中的值都自带下标,从0开始。存储枚举类的下标序数到数据库中。
使用这个转换器后,自定义的枚举类中的code或者说id(1001,1002,1003,1004等等),不生效,使用枚举类下标序数。
eg:
枚举类:male(1001,“男性”) female(1002,“女性”)
存到数据库中为:(0,“男性”) (1,“女性”)
取巧一点,你枚举类中的数值也从0开始定义,就可以使用这个转换器。
但是如果你想使用自定义的数值,比如 (1001,“男性”),就需要自定义转换器来实现。
EnumTypeHandler
存储枚举类的名称(MALE, FEMALE)。
数据库中和实体类中使用字符串类型来接的话,使用这个转换器就可以了。
但是,这么多还是不能满足你的需求,那只能自定义类型处理器了。
使用自定的的数值ID,自定义转换器参考:
https://www.cnblogs.com/song27/p/10999837.html
自定义转换器后,在配置文件中配置:
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
default-enum-type-handler: com.apple.bunana.orange.config.AutoGenericEnumTypeHandler
Mybatis中jdbcType–javaType–typeHandler三者关系参考:
https://www.cnblogs.com/canger/p/9979606.html