diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/WrapperUtil.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/WrapperUtil.java index 365ad24a..3882ba9b 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/WrapperUtil.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/WrapperUtil.java @@ -50,7 +50,12 @@ class WrapperUtil { } } // not Brackets - else { + else if (condition instanceof OperatorSelectCondition) { + if (list == null) { + list = new ArrayList<>(); + } + list.add(((OperatorSelectCondition) condition).getQueryWrapper()); + } else { Object value = condition.getValue(); if (value instanceof QueryWrapper) { if (list == null) { diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/util/EnumWrapper.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/util/EnumWrapper.java index 2afb354d..765ab640 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/util/EnumWrapper.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/util/EnumWrapper.java @@ -77,13 +77,22 @@ public class EnumWrapper> { if (!(methodName.startsWith("get") && methodName.length() > 3)) { throw new IllegalStateException("Can not find get method \"" + methodName + "()\" in enum: " + enumClass.getName()); } + + String enumValueFieldName; + if (methodName.startsWith("get")) { + enumValueFieldName = StringUtil.firstCharToLowerCase(enumValueMethod.getName().substring(3)); + } else { + enumValueFieldName = enumValueMethod.getName().toLowerCase(); + } + enumValueField = ClassUtil.getFirstField(enumClass, field -> enumValueFieldName.equals(field.getName())); + if (enumValueField != null) { + propertyType = ClassUtil.getWrapType(enumValueField.getType()); + } else { + throw new IllegalStateException("Can not find field \"" + enumValueFieldName + "()\" in enum: " + enumClass.getName()); + } + this.getterMethod = enumValueMethod; this.hasEnumValueAnnotation = true; - Class returnType = enumValueMethod.getReturnType(); - if (returnType.isPrimitive()) { - returnType = ConvertUtil.primitiveToBoxed(returnType); - } - this.propertyType = returnType; } } }