当前使用版本(必填,否则不予处理)

3.5.3.1

该问题是如何引起的?(确定最新版也有问题再提!!!)

CompositeEnumTypeHandler类当注解匹配时使用MyBatisEnumTypeHandler处理,这与文档中可通过配置文件修改枚举全局处理不相一致,导致用户自定义实现无法覆盖@EnumValue注解的默认实现(从老版本升级到新版本会存在该问题)。 建议:当用户配置了全局的枚举处理,优先使用用户提供的。

`public class CompositeEnumTypeHandler> implements TypeHandler {

private static final Map<Class<?>, Boolean> MP_ENUM_CACHE = new ConcurrentHashMap<>();
@Setter
private static Class<? extends TypeHandler> defaultEnumTypeHandler = EnumTypeHandler.class;
private final TypeHandler<E> delegate;

public CompositeEnumTypeHandler(Class<E> enumClassType) {
    if (enumClassType == null) {
        throw new IllegalArgumentException("Type argument cannot be null");
    }
    if (CollectionUtils.computeIfAbsent(MP_ENUM_CACHE, enumClassType, MybatisEnumTypeHandler::isMpEnums)) {
        delegate = new MybatisEnumTypeHandler<>(enumClassType);
    } else {
        delegate = getInstance(enumClassType, defaultEnumTypeHandler);
    }
}

}`

方式二:直接指定 DefaultEnumTypeHandler 此方式用来 全局 修改 mybatis 使用的 EnumTypeHandler。

配置文件 resources/application.yml

mybatis-plus: # 修改 mybatis 的 DefaultEnumTypeHandler configuration: default-enum-type-handler: com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler

重现步骤(如果有就写完整)

报错信息

Comment From: miemieYaho

那你就自己写个注解在枚举上,自己实现一个TypeHandler来用

Comment From: huan-ling

建议将更多的扩展性交给用户。

Comment From: miemieYaho

不支持