refactor: EnumWrapper的getEnumValue方法如果没有注解,则使用枚举name返回

This commit is contained in:
robor.luo 2024-03-25 21:32:46 +08:00
parent 7d24d19fbd
commit 8eb8807ac8
4 changed files with 31 additions and 20 deletions

View File

@ -42,4 +42,12 @@ public class TypeHandlerObject implements Serializable {
return value;
}
@Override
public String toString() {
return "TypeHandlerObject{"
+ "value=" + value
+ ", typeHandler=" + typeHandler.getClass().getSimpleName()
+ '}';
}
}

View File

@ -66,17 +66,17 @@ public class QueryCondition implements CloneSupport<QueryCondition> {
public static QueryCondition create(String schema, String table, String column, String logic, Object value) {
QueryCondition condition = new QueryCondition();
condition.setColumn(new QueryColumn(schema, table, column));
condition.setLogic(logic);
condition.setValue(value);
return condition;
return create(new QueryColumn(schema, table, column), logic, value);
}
public static QueryCondition create(QueryColumn queryColumn, Object value) {
return create(queryColumn, SqlConsts.EQUALS, value);
}
public static QueryCondition create(QueryColumn queryColumn, SqlOperator logic, Object value) {
return create(queryColumn, logic.getValue(), value);
}
public static QueryCondition create(QueryColumn queryColumn, String logic, Object value) {
QueryCondition condition = new QueryCondition();
condition.setColumn(queryColumn);
@ -85,14 +85,6 @@ public class QueryCondition implements CloneSupport<QueryCondition> {
return condition;
}
public static QueryCondition create(QueryColumn queryColumn, SqlOperator logic, Object value) {
QueryCondition condition = new QueryCondition();
condition.setColumn(queryColumn);
condition.setLogic(logic.getValue());
condition.setValue(value);
return condition;
}
public QueryColumn getColumn() {
return column;
}

View File

@ -700,11 +700,7 @@ public class TableInfo {
// fixed: https://gitee.com/mybatis-flex/mybatis-flex/issues/I7TFBK
if (value.getClass().isEnum()) {
EnumWrapper enumWrapper = EnumWrapper.of(value.getClass());
if (enumWrapper.hasEnumValueAnnotation()) {
value = enumWrapper.getEnumValue((Enum) value);
} else {
value = ((Enum<?>) value).name();
}
value = enumWrapper.getEnumValue((Enum) value);
}
}

View File

@ -88,10 +88,25 @@ public class EnumWrapper<E extends Enum<E>> {
}
}
/**
* 获取枚举值
* 顺序
* 1@EnumValue标识的get方法
* 2@EnumValue标识的属性
* 3没有使用@EnumValue取枚举name
*
* @param object
* @return
*/
public Object getEnumValue(E object) {
try {
return getterMethod != null ? getterMethod.invoke(object) : property.get(object);
if (getterMethod != null) {
return getterMethod.invoke(object);
} else if(property != null){
return property.get(object);
} else {
return object.name();
}
} catch (Exception e) {
throw FlexExceptions.wrap(e);
}