调整打印SQL语句逻辑

This commit is contained in:
jmxd 2023-04-07 22:01:13 +08:00
parent 1fc620b814
commit d008656abe
3 changed files with 29 additions and 5 deletions

View File

@ -175,9 +175,15 @@ public class BoundSql {
RequestEntity requestEntity = RequestContext.getRequestEntity();
interceptors.forEach(interceptor -> interceptor.preHandle(this, requestEntity));
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;
};

View File

@ -16,8 +16,7 @@ import java.util.stream.Collectors;
*/
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());
String parameters = Arrays.stream(boundSql.getParameters()).map(it -> {
if (it == null) {
@ -34,4 +33,14 @@ public class DefaultSqlInterceptor implements SQLInterceptor {
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);
}
}

View File

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