mybatis-plus自定义数值类型枚举类转换器

本文介绍了MyBatis-Plus中处理枚举类型的两种内置转换器,EnumOrdinalTypeHandler和EnumTypeHandler,以及如何根据需求自定义转换器。当需要存储枚举的自定义数值ID时,需要创建自己的类型处理器。同时,文章提供了自定义转换器的配置方法和Mybatis中jdbcType、javaType与typeHandler的关系概述。

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值