diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/util/ClassUtil.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/util/ClassUtil.java index a6c0f90a..a4151175 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/util/ClassUtil.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/util/ClassUtil.java @@ -105,6 +105,10 @@ public class ClassUtil { || clazz == double[].class; } + public static boolean canInstance(int mod) { + return !Modifier.isAbstract(mod) || !Modifier.isInterface(mod); + } + public static T newInstance(Class clazz) { try { diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/util/MapperUtil.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/util/MapperUtil.java index af2d8e25..e6dbd342 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/util/MapperUtil.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/util/MapperUtil.java @@ -31,6 +31,7 @@ public class MapperUtil { } + @SuppressWarnings({"rawtypes", "unchecked"}) public static void queryFields(BaseMapper mapper, List list, Consumer>[] consumers) { if (CollectionUtil.isEmpty(list) || ArrayUtil.isEmpty(consumers) || consumers[0] == null) { return; @@ -69,6 +70,10 @@ public class MapperUtil { private static Class getWrapType(Class type) { + if (ClassUtil.canInstance(type.getModifiers())) { + return type; + } + if (List.class.isAssignableFrom(type)) { return ArrayList.class; }