Эх сурвалжийг харах

调整打印`SQL`语句逻辑

jmxd 2 жил өмнө
parent
commit
d008656abe

+ 9 - 3
magic-api/src/main/java/org/ssssssss/magicapi/modules/db/BoundSql.java

@@ -175,9 +175,15 @@ public class BoundSql {
 		RequestEntity requestEntity = RequestContext.getRequestEntity();
 		RequestEntity requestEntity = RequestContext.getRequestEntity();
 		interceptors.forEach(interceptor -> interceptor.preHandle(this, requestEntity));
 		interceptors.forEach(interceptor -> interceptor.preHandle(this, requestEntity));
 		Supplier<T> newSupplier = () -> {
 		Supplier<T> newSupplier = () -> {
-			Object result = supplier.get();
-			for (SQLInterceptor interceptor : interceptors) {
-				result = interceptor.postHandle(this, result, requestEntity);
+			Object result;
+			try {
+				result = supplier.get();
+				for (SQLInterceptor interceptor : interceptors) {
+					result = interceptor.postHandle(this, result, requestEntity);
+				}
+			} catch (Throwable e) {
+				interceptors.forEach(interceptor -> interceptor.handleException(this, e, requestEntity));
+				throw e;
 			}
 			}
 			return (T) result;
 			return (T) result;
 		};
 		};

+ 11 - 2
magic-api/src/main/java/org/ssssssss/magicapi/modules/db/inteceptor/DefaultSqlInterceptor.java

@@ -16,8 +16,7 @@ import java.util.stream.Collectors;
  */
  */
 public class DefaultSqlInterceptor implements SQLInterceptor {
 public class DefaultSqlInterceptor implements SQLInterceptor {
 
 
-	@Override
-	public void preHandle(BoundSql boundSql, RequestEntity requestEntity) {
+	private void handleLog(BoundSql boundSql, RequestEntity requestEntity){
 		Logger logger = LoggerFactory.getLogger(requestEntity == null ? "Unknown" : requestEntity.getMagicScriptContext().getScriptName());
 		Logger logger = LoggerFactory.getLogger(requestEntity == null ? "Unknown" : requestEntity.getMagicScriptContext().getScriptName());
 		String parameters = Arrays.stream(boundSql.getParameters()).map(it -> {
 		String parameters = Arrays.stream(boundSql.getParameters()).map(it -> {
 			if (it == null) {
 			if (it == null) {
@@ -34,4 +33,14 @@ public class DefaultSqlInterceptor implements SQLInterceptor {
 			logger.info("SQL参数:{}", parameters);
 			logger.info("SQL参数:{}", parameters);
 		}
 		}
 	}
 	}
+	@Override
+	public Object postHandle(BoundSql boundSql, Object result, RequestEntity requestEntity) {
+		handleLog(boundSql, requestEntity);
+		return result;
+	}
+
+	@Override
+	public void handleException(BoundSql boundSql, Throwable throwable, RequestEntity requestEntity) {
+		handleLog(boundSql, requestEntity);
+	}
 }
 }

+ 9 - 0
magic-api/src/main/java/org/ssssssss/magicapi/modules/db/inteceptor/SQLInterceptor.java

@@ -31,5 +31,14 @@ public interface SQLInterceptor {
 		return result;
 		return result;
 	}
 	}
 
 
+	/**
+	 * @since 2.1.0
+	 * @param boundSql	SQL信息
+	 * @param throwable 异常信息
+	 * @param requestEntity	请求信息
+	 */
+	default void handleException(BoundSql boundSql, Throwable throwable, RequestEntity requestEntity){
+	}
+
 
 
 }
 }