1
mirror of https://github.com/CarmJos/EasySQL.git synced 2024-09-19 21:35:47 +00:00

[0.3.14] 版本修复

- `[F]` 修复上一版本中 SQLDebugHandler 的处理出现空指针异常。
This commit is contained in:
Carm Jos 2022-04-13 07:51:56 +08:00
parent 20ac8f3908
commit 6cd080210f
3 changed files with 25 additions and 11 deletions

View File

@ -8,7 +8,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.slf4j.Logger; import org.slf4j.Logger;
import java.util.Arrays; import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
@ -36,6 +36,18 @@ public interface SQLDebugHandler {
*/ */
void afterQuery(@NotNull SQLQuery query, long executeTime, long closeTime); void afterQuery(@NotNull SQLQuery query, long executeTime, long closeTime);
default String parseParams(@Nullable Object[] params) {
if (params == null) return "<#NULL>";
else if (params.length == 0) return "<#EMPTY>";
List<String> paramsString = new ArrayList<>();
for (Object param : params) {
if (param == null) paramsString.add("NULL");
else paramsString.add(param.toString());
}
return String.join(", ", paramsString);
}
@SuppressWarnings("DuplicatedCode") @SuppressWarnings("DuplicatedCode")
static SQLDebugHandler defaultHandler(Logger logger) { static SQLDebugHandler defaultHandler(Logger logger) {
return new SQLDebugHandler() { return new SQLDebugHandler() {
@ -55,18 +67,12 @@ public interface SQLDebugHandler {
} }
if (params.size() == 1) { if (params.size() == 1) {
Object[] param = params.get(0); Object[] param = params.get(0);
if (param != null) { logger.info("┣# SQLParams({}): {}", param.length, parseParams(param));
logger.info("┣# SQLParams({}): {}", param.length, Arrays.stream(param).map(Object::toString).reduce((a, b) -> a + ", " + b).orElse(""));
}
} else if (params.size() > 1) { } else if (params.size() > 1) {
logger.info("┣# SQLParams: "); logger.info("┣# SQLParams: ");
int i = 0; int i = 0;
for (Object[] param : params) { for (Object[] param : params) {
if (param != null) { logger.info("┃ [{}] {}", ++i, parseParams(param));
logger.info("┃ [{}] {}", ++i, Arrays.stream(param).map(Object::toString).reduce((a, b) -> a + ", " + b).orElse(""));
} else {
logger.info("┃ [{}] {}", ++i, "<#NULL>");
}
} }
} }
logger.info("┣# createTime: {}", action.getCreateTime()); logger.info("┣# createTime: {}", action.getCreateTime());

View File

@ -69,7 +69,11 @@ public abstract class AbstractSQLAction<T> implements SQLAction<T> {
protected void debugMessage(List<Object[]> params) { protected void debugMessage(List<Object[]> params) {
if (getManager().isDebugMode()) { if (getManager().isDebugMode()) {
getManager().getDebugHandler().beforeExecute(this, params); try {
getManager().getDebugHandler().beforeExecute(this, params);
} catch (Exception exception) {
exception.printStackTrace();
}
} }
} }

View File

@ -72,7 +72,11 @@ public class SQLQueryImpl implements SQLQuery {
if (getConnection() != null && !getConnection().isClosed()) getConnection().close(); if (getConnection() != null && !getConnection().isClosed()) getConnection().close();
if (getManager().isDebugMode()) { if (getManager().isDebugMode()) {
getManager().getDebugHandler().afterQuery(this, getExecuteTime(), System.currentTimeMillis()); try {
getManager().getDebugHandler().afterQuery(this, getExecuteTime(), System.currentTimeMillis());
} catch (Exception ex) {
ex.printStackTrace();
}
} }
getManager().getActiveQuery().remove(getAction().getActionUUID()); getManager().getActiveQuery().remove(getAction().getActionUUID());
} catch (SQLException e) { } catch (SQLException e) {