mirror of
https://gitee.com/mybatis-flex/mybatis-flex.git
synced 2025-12-07 00:58:24 +08:00
optimize: 枚举注解EnumValue 用在方法上
This commit is contained in:
parent
f9502671cf
commit
bbd1f8daee
@ -22,7 +22,7 @@ import java.lang.annotation.*;
|
||||
*/
|
||||
@Documented
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target({ElementType.FIELD})
|
||||
@Target({ElementType.FIELD, ElementType.METHOD})
|
||||
public @interface EnumValue {
|
||||
|
||||
}
|
||||
|
||||
@ -22,6 +22,7 @@ import org.apache.ibatis.type.JdbcType;
|
||||
import org.apache.ibatis.type.TypeHandler;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
import java.sql.CallableStatement;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
@ -34,7 +35,8 @@ public class CompositeEnumTypeHandler<E extends Enum<E>> implements TypeHandler<
|
||||
|
||||
public CompositeEnumTypeHandler(Class<E> enumClass) {
|
||||
List<Field> enumDbValueFields = ClassUtil.getAllFields(enumClass, f -> f.getAnnotation(EnumValue.class) != null);
|
||||
if (enumDbValueFields.isEmpty()) {
|
||||
List<Method> enumDbValueMethods = ClassUtil.getAllMethods(enumClass, m -> m.getAnnotation(EnumValue.class) != null);
|
||||
if (enumDbValueFields.isEmpty() && enumDbValueMethods.isEmpty()) {
|
||||
delegate = new EnumTypeHandler<>(enumClass);
|
||||
} else {
|
||||
delegate = new FlexEnumTypeHandler<>(enumClass);
|
||||
|
||||
@ -70,6 +70,13 @@ public class EnumWrapper<E extends Enum<E>> {
|
||||
this.getterMethod = getter;
|
||||
}
|
||||
}
|
||||
|
||||
if (!hasEnumValueAnnotation) {
|
||||
Method enumValueMethod = ClassUtil.getFirstMethod(enumClass, method -> method.getAnnotation(EnumValue.class) != null);
|
||||
if (enumValueMethod != null) {
|
||||
this.getterMethod = enumValueMethod;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user