53 lines
1.8 KiB
Java
53 lines
1.8 KiB
Java
package com.dykj.config;
|
|
|
|
import org.apache.ibatis.cache.CacheKey;
|
|
import org.apache.ibatis.executor.Executor;
|
|
import org.apache.ibatis.mapping.BoundSql;
|
|
import org.apache.ibatis.mapping.MappedStatement;
|
|
import org.apache.ibatis.plugin.*;
|
|
import org.apache.ibatis.session.ResultHandler;
|
|
import org.apache.ibatis.session.RowBounds;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
import java.util.Properties;
|
|
|
|
|
|
@Intercepts({
|
|
@Signature(type = Executor.class, method = "update", args = {MappedStatement.class,
|
|
Object.class}),
|
|
@Signature(type = Executor.class, method = "query", args = {MappedStatement.class,
|
|
Object.class, RowBounds.class, ResultHandler.class, CacheKey.class, BoundSql.class})})
|
|
public class SqlStatementInterceptor implements Interceptor {
|
|
|
|
public static final Logger log = LoggerFactory.getLogger("sys-sql");
|
|
|
|
@Override
|
|
public Object intercept(Invocation invocation) throws Throwable {
|
|
long startTime = System.currentTimeMillis();
|
|
try {
|
|
return invocation.proceed();
|
|
} finally {
|
|
long timeConsuming = System.currentTimeMillis() - startTime;
|
|
log.info("执行SQL:{}ms", timeConsuming);
|
|
if (timeConsuming > 999 && timeConsuming < 5000) {
|
|
log.info("执行SQL大于1s:{}ms", timeConsuming);
|
|
} else if (timeConsuming >= 5000 && timeConsuming < 10000) {
|
|
log.info("执行SQL大于5s:{}ms", timeConsuming);
|
|
} else if (timeConsuming >= 10000) {
|
|
log.info("执行SQL大于10s:{}ms", timeConsuming);
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public Object plugin(Object target) {
|
|
return Plugin.wrap(target, this);
|
|
}
|
|
|
|
@Override
|
|
public void setProperties(Properties properties) {
|
|
|
|
}
|
|
}
|