Browse Source

部分优化: 直到抛出异常时才进行字符串 format

miemie 6 years ago
parent
commit
70b0853901

+ 14 - 14
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/Assert.java

@@ -36,9 +36,9 @@ public final class Assert {
      * @param expression boolean 值
      * @param expression boolean 值
      * @param message    消息
      * @param message    消息
      */
      */
-    public static void isTrue(boolean expression, String message) {
+    public static void isTrue(boolean expression, String message, Object... params) {
         if (!expression) {
         if (!expression) {
-            throw ExceptionUtils.mpe(message);
+            throw ExceptionUtils.mpe(message, params);
         }
         }
     }
     }
 
 
@@ -49,8 +49,8 @@ public final class Assert {
      * @param expression boolean 值
      * @param expression boolean 值
      * @param message    消息
      * @param message    消息
      */
      */
-    public static void isFalse(boolean expression, String message) {
-        isTrue(!expression, message);
+    public static void isFalse(boolean expression, String message, Object... params) {
+        isTrue(!expression, message, params);
     }
     }
 
 
     /**
     /**
@@ -60,8 +60,8 @@ public final class Assert {
      * @param object  对象
      * @param object  对象
      * @param message 消息
      * @param message 消息
      */
      */
-    public static void isNull(Object object, String message) {
-        isTrue(object == null, message);
+    public static void isNull(Object object, String message, Object... params) {
+        isTrue(object == null, message, params);
     }
     }
 
 
     /**
     /**
@@ -71,8 +71,8 @@ public final class Assert {
      * @param object  对象
      * @param object  对象
      * @param message 消息
      * @param message 消息
      */
      */
-    public static void notNull(Object object, String message) {
-        isTrue(object != null, message);
+    public static void notNull(Object object, String message, Object... params) {
+        isTrue(object != null, message, params);
     }
     }
 
 
     /**
     /**
@@ -82,8 +82,8 @@ public final class Assert {
      * @param collection 集合
      * @param collection 集合
      * @param message    消息
      * @param message    消息
      */
      */
-    public static void notEmpty(Collection<?> collection, String message) {
-        isTrue(CollectionUtils.isNotEmpty(collection), message);
+    public static void notEmpty(Collection<?> collection, String message, Object... params) {
+        isTrue(CollectionUtils.isNotEmpty(collection), message, params);
     }
     }
 
 
     /**
     /**
@@ -93,8 +93,8 @@ public final class Assert {
      * @param map     集合
      * @param map     集合
      * @param message 消息
      * @param message 消息
      */
      */
-    public static void notEmpty(Map<?, ?> map, String message) {
-        isTrue(CollectionUtils.isNotEmpty(map), message);
+    public static void notEmpty(Map<?, ?> map, String message, Object... params) {
+        isTrue(CollectionUtils.isNotEmpty(map), message, params);
     }
     }
 
 
     /**
     /**
@@ -104,7 +104,7 @@ public final class Assert {
      * @param array   数组
      * @param array   数组
      * @param message 消息
      * @param message 消息
      */
      */
-    public static void notEmpty(Object[] array, String message) {
-        isTrue(ArrayUtils.isNotEmpty(array), message);
+    public static void notEmpty(Object[] array, String message, Object... params) {
+        isTrue(ArrayUtils.isNotEmpty(array), message, params);
     }
     }
 }
 }

+ 4 - 4
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/ExceptionUtils.java

@@ -37,8 +37,8 @@ public final class ExceptionUtils {
      * @param t   异常信息
      * @param t   异常信息
      * @return 返回异常
      * @return 返回异常
      */
      */
-    public static MybatisPlusException mpe(String msg, Throwable t) {
-        return new MybatisPlusException(msg, t);
+    public static MybatisPlusException mpe(String msg, Throwable t, Object... params) {
+        return new MybatisPlusException(StringUtils.format(false, msg, params), t);
     }
     }
 
 
     /**
     /**
@@ -47,8 +47,8 @@ public final class ExceptionUtils {
      * @param msg 消息
      * @param msg 消息
      * @return 返回异常
      * @return 返回异常
      */
      */
-    public static MybatisPlusException mpe(String msg) {
-        return new MybatisPlusException(msg);
+    public static MybatisPlusException mpe(String msg, Object... params) {
+        return new MybatisPlusException(StringUtils.format(false, msg, params));
     }
     }
 
 
     /**
     /**

+ 10 - 23
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/ReflectionKit.java

@@ -15,26 +15,17 @@
  */
  */
 package com.baomidou.mybatisplus.core.toolkit;
 package com.baomidou.mybatisplus.core.toolkit;
 
 
-import static java.util.function.Function.identity;
-import static java.util.stream.Collectors.toCollection;
-import static java.util.stream.Collectors.toMap;
+import org.apache.ibatis.logging.Log;
+import org.apache.ibatis.logging.LogFactory;
 
 
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.util.Collections;
-import java.util.LinkedHashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
+import java.lang.reflect.*;
+import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Stream;
 import java.util.stream.Stream;
 
 
-import org.apache.ibatis.logging.Log;
-import org.apache.ibatis.logging.LogFactory;
+import static java.util.function.Function.identity;
+import static java.util.stream.Collectors.toCollection;
+import static java.util.stream.Collectors.toMap;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -95,16 +86,13 @@ public class ReflectionKit {
     public static Object getMethodValue(Class<?> cls, Object entity, String str) {
     public static Object getMethodValue(Class<?> cls, Object entity, String str) {
         Map<String, Field> fieldMaps = getFieldMap(cls);
         Map<String, Field> fieldMaps = getFieldMap(cls);
         try {
         try {
-            if (CollectionUtils.isEmpty(fieldMaps)) {
-                throw ExceptionUtils.mpe(String.format("Error: NoSuchField in %s for %s.  Cause:", cls.getSimpleName(), str));
-            }
+            Assert.notEmpty(fieldMaps, "Error: NoSuchField in %s for %s.  Cause:", cls.getSimpleName(), str);
             Method method = cls.getMethod(getMethodCapitalize(fieldMaps.get(str), str));
             Method method = cls.getMethod(getMethodCapitalize(fieldMaps.get(str), str));
             return method.invoke(entity);
             return method.invoke(entity);
         } catch (NoSuchMethodException e) {
         } catch (NoSuchMethodException e) {
-            throw ExceptionUtils.mpe(String.format("Error: NoSuchMethod in %s.  Cause:", cls.getSimpleName()) + e);
+            throw ExceptionUtils.mpe("Error: NoSuchMethod in %s.  Cause:", e, cls.getSimpleName());
         } catch (IllegalAccessException e) {
         } catch (IllegalAccessException e) {
-            throw ExceptionUtils.mpe(String.format("Error: Cannot execute a private method. in %s.  Cause:",
-                cls.getSimpleName()) + e);
+            throw ExceptionUtils.mpe("Error: Cannot execute a private method. in %s.  Cause:", e, cls.getSimpleName());
         } catch (InvocationTargetException e) {
         } catch (InvocationTargetException e) {
             throw ExceptionUtils.mpe("Error: InvocationTargetException on getMethodValue.  Cause:" + e);
             throw ExceptionUtils.mpe("Error: InvocationTargetException on getMethodValue.  Cause:" + e);
         }
         }
@@ -230,5 +218,4 @@ public class ReflectionKit {
         superFieldList.stream().filter(field -> fieldMap.get(field.getName()) == null).forEach(fieldList::add);
         superFieldList.stream().filter(field -> fieldMap.get(field.getName()) == null).forEach(fieldList::add);
         return fieldList;
         return fieldList;
     }
     }
-
 }
 }

+ 19 - 1
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/StringUtils.java

@@ -62,13 +62,31 @@ public class StringUtils {
         // to do nothing
         // to do nothing
     }
     }
 
 
+    /**
+     * 安全的进行字符串 format
+     *
+     * @param mustDo 肯定能 format
+     * @param target 目标字符串
+     * @param params format 参数
+     * @return format 后的
+     */
+    public static String format(boolean mustDo, String target, Object... params) {
+        if (mustDo) {
+            return String.format(target, params);
+        }
+        if (target.contains("%s") && ArrayUtils.isNotEmpty(params)) {
+            return String.format(target, params);
+        }
+        return target;
+    }
+
     /**
     /**
      * <p>
      * <p>
      * Blob 转为 String 格式
      * Blob 转为 String 格式
      * </p>
      * </p>
      *
      *
      * @param blob Blob 对象
      * @param blob Blob 对象
-     * @return
+     * @return 转换后的
      */
      */
     public static String blob2String(Blob blob) {
     public static String blob2String(Blob blob) {
         if (null != blob) {
         if (null != blob) {