mirror of
https://gitee.com/mybatis-flex/mybatis-flex.git
synced 2025-12-07 00:58:24 +08:00
fix: 回滚到仅支持get方法级别EnumValue注解
This commit is contained in:
parent
984ed7eb60
commit
64a625d098
@ -41,18 +41,11 @@ public enum TypeEnum {
|
|||||||
//getter
|
//getter
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
```java
|
|
||||||
public interface BaseEnum {
|
|
||||||
@EnumValue // 当注解写在枚举基类接口里
|
|
||||||
Integer getCode();
|
|
||||||
String getDesc();
|
|
||||||
}
|
|
||||||
|
|
||||||
```
|
|
||||||
```java
|
```java
|
||||||
@Getter
|
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public enum EnableEnum implements BaseEnum {
|
public enum EnableEnum {
|
||||||
/**
|
/**
|
||||||
* 启用
|
* 启用
|
||||||
*/
|
*/
|
||||||
@ -64,6 +57,15 @@ public enum EnableEnum implements BaseEnum {
|
|||||||
;
|
;
|
||||||
private final int code;
|
private final int code;
|
||||||
private final String desc;
|
private final String desc;
|
||||||
|
|
||||||
|
@EnumValue
|
||||||
|
public int getCode() {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDesc() {
|
||||||
|
return desc;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
@ -74,8 +76,8 @@ public enum EnableEnum implements BaseEnum {
|
|||||||
**注意事项**
|
**注意事项**
|
||||||
|
|
||||||
- 1、@EnumValue 注解标识的属性,要求必须是 public 修饰,或者有 get 方法。
|
- 1、@EnumValue 注解标识的属性,要求必须是 public 修饰,或者有 get 方法。
|
||||||
- 2、@EnumValue 注解标识支持在 get 方法使用注解,也支持在基类接口上的get方法上使用注解。
|
- 2、@EnumValue 注解标识支持在 get 方法使用注解。
|
||||||
- 3、枚举注解优先级。 优先取字段上的注解。如果字段没有注解,则会找方法上的注解,如果枚举类当前方法没有注解,则会去找父类或者父接口的方法寻找存在注解的方法。
|
- 3、枚举注解优先级。 优先取字段上的注解。如果字段没有注解,则会找方法上的注解,如果枚举类当前方法没有注解,则会去找父类的方法寻找存在注解的方法。
|
||||||
|
|
||||||
- 4、当配置了 @EnumValue 时,QueryWrapper 构建时,传入枚举,自动使用该值进行 SQL 参数拼接。例如:
|
- 4、当配置了 @EnumValue 时,QueryWrapper 构建时,传入枚举,自动使用该值进行 SQL 参数拼接。例如:
|
||||||
|
|
||||||
|
|||||||
@ -41,12 +41,7 @@ public class CompositeEnumTypeHandler<E extends Enum<E>> implements TypeHandler<
|
|||||||
if (enumDbValueFields.isEmpty()) {
|
if (enumDbValueFields.isEmpty()) {
|
||||||
List<Method> enumDbValueMethods = ClassUtil.getAllMethods(enumClass, m -> m.getAnnotation(EnumValue.class) != null);
|
List<Method> enumDbValueMethods = ClassUtil.getAllMethods(enumClass, m -> m.getAnnotation(EnumValue.class) != null);
|
||||||
if (enumDbValueMethods.isEmpty()) {
|
if (enumDbValueMethods.isEmpty()) {
|
||||||
List<Method> enumDbInterfaceMethodList = Arrays.stream(enumClass.getInterfaces())
|
isNotFound = true;
|
||||||
.flatMap(inter -> ClassUtil.getAllMethods(inter, m -> m.getAnnotation(EnumValue.class) != null).stream())
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
if (enumDbInterfaceMethodList.isEmpty()) {
|
|
||||||
isNotFound = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (isNotFound) {
|
if (isNotFound) {
|
||||||
|
|||||||
@ -73,15 +73,6 @@ public class EnumWrapper<E extends Enum<E>> {
|
|||||||
|
|
||||||
if (!hasEnumValueAnnotation) {
|
if (!hasEnumValueAnnotation) {
|
||||||
Method enumValueMethod = ClassUtil.getFirstMethod(enumClass, method -> method.getAnnotation(EnumValue.class) != null);
|
Method enumValueMethod = ClassUtil.getFirstMethod(enumClass, method -> method.getAnnotation(EnumValue.class) != null);
|
||||||
if (enumValueMethod == null) {
|
|
||||||
Class<?>[] interfaces = enumClass.getInterfaces();
|
|
||||||
for (Class<?> anInterface : interfaces) {
|
|
||||||
enumValueMethod = ClassUtil.getFirstMethod(anInterface, method -> method.getAnnotation(EnumValue.class) != null);
|
|
||||||
if (enumValueMethod != null) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (enumValueMethod != null) {
|
if (enumValueMethod != null) {
|
||||||
this.getterMethod = enumValueMethod;
|
this.getterMethod = enumValueMethod;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user