我们采用debug跟踪一下代码,可以看到在查找枚举BizType的映射处理器的时候使用了mybatis-plus复合枚举处理类型CompositeEnumTypeHandler 这里可能我们有疑问,TypeHandlerRegistry.defaultEnumTypeHandler这个默认枚举处理器是怎么设置进去的了,其实是构建MybatisConfiguration的时候设置的 接着我们往下debug可以看到使用了mybatis-plus...
肯定是引入的mybatis-plus的枚举处理类发生了变化,所以无法从序列号转换成对应的枚举值,从错误截图可以看出, 当前版本的mybatis-plus的默认枚举处理类是org.apache.ibatis.type.EnumTypeHandler,而不是原先的EnumOrdinalTypeHandler,但是项目代码中都是这种原生枚举的使用,所以处理失败。 4、问题解决 mybatis-plus有一个...
其实,跟一下代码,可以发现,跟我们自己手写一个typeHandler没区别,这里最终获取转换值时,调用了com.baomidou.mybatisplus.extension.handlers.MybatisEnumTypeHandler#getNullableResult(java.sql.ResultSet, int),此时已经拿到了枚举值的具体类是什么了。接下来就是调用valueOf去获取对应的枚举值即可。 附源码: package o...
然后,在使用MyBatis Plus进行查询时,我们可以通过自定义枚举类型处理器来实现字符串字段到枚举类型字段的自动转换。我们可以继承MyBatis Plus提供的EnumTypeHandler类,并实现我们自定义的逻辑,在getTypeEnum方法中将字符串转换成枚举类型: publicclassGenderEnumTypeHandlerextendsEnumTypeHandler<GenderEnum>{publicGenderEnumTypeH...
方式一:仅配置指定包内的枚举类使用 MybatisEnumTypeHandler 在application.yml中配置如下信息。 mybatis-plus: # 支持统配符 * 或者 ; 分割 typeEnumsPackage: xxxx.xxx.xxx xxxx.xxx.xxx为枚举类所在的包名,本例应该是com.panda.crud.logic.delete.auto.fill.enums。 添加如上配置后,Mybatis-Plus 提供的My...
如果配置了枚举类扫描路径,MybatisPlus会获取该路径下所有的枚举类,遍历为每一个枚举类注册一个MybatisEnumTypeHandler对象到TypeHandlerRegistry中。熟悉Mybatis的同学都知道,TypeHandler对象在ParameterHandler设置参数或者ResultSetHandler映射对象时会被调用。MybatisEnumTypeHandler怎么处理枚举相关逻辑自行查看源码。
#mybatis-plus.configuration.default-enum-type-handler=org.apache.ibatis.type.EnumOrdinalTypeHandler 或 #配置枚举 支持通配符 * 或者 ; 分割mybatis-plus:type-enums-package:com.demo.mybatisplus.constantconfiguration:default-enum-type-handler:org.apache.ibatis.type.EnumOrdinalTypeHandler ...
我就默认其他环境已经准备好了,咱们直接从mybatis-plus开始。 1.1 依赖准备 想要什么依赖版本的去maven仓库查看:https://mvnrepository.com/ 引入mybatis-plus依赖: <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> ...
通常可以为每个Enum类配置一个TypeHandler,但是这种比较繁琐,这里通过注解配合Mybatis的默认EnumTypeHander配置实现通用枚举TypeHander。(代码来自Mybatis-Plus,做了一些小改动) 定义一个注解 @Documented@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.FIELD,ElementType.ANNOTATION_TYPE})public@interfaceEnumValue{}...
configuration.setDefaultEnumTypeHandler(MybatisEnumTypeHandler.class); properties.setConfiguration(configuration); 序列化枚举值为数据库值 以下我是使用的 fastjson: 全局(添加在前面的配置文件中): @Bean public MybatisPlusPropertiesCustomizer mybatisPlusPropertiesCustomizer() { ...