@Signature(type=org.apache.ibatis.executor.statement.StatementHandler.class,method="query",args={java.sql.Statement.class,org.apache.ibatis.session.ResultHandler.class}) @Signature(type=org.apache.ibatis.executor.statement.StatementHandler.class,method="update",args=java.sql.Statement.class) @Signature(type=org.apache.ibatis.executor.statement.StatementHandler.class,method="batch",args=java.sql.Statement.class)
@Configuration
@RefreshScope
public class SQLPerformanceInterceptor
extends Object
implements org.apache.ibatis.plugin.Interceptor
| 限定符和类型 | 字段和说明 |
|---|---|
private static String |
DRUID_POOLED_PREPARED_STATEMENT |
private Method |
druidGetSqlMethod |
private static String |
ORACLE_PREPARED_STATEMENT_WRAPPER |
private Method |
oracleGetOriginalSqlMethod |
(专用程序包) SqlProperties |
sqlProperties |
private static String |
T4C_PREPARED_STATEMENT |
| 构造器和说明 |
|---|
SQLPerformanceInterceptor() |
| 限定符和类型 | 方法和说明 |
|---|---|
private List<Map<String,Object>> |
getAccessType(String originalSql,
org.springframework.jdbc.core.JdbcTemplate jdbcTemplate) |
Method |
getMethodRegular(Class<?> clazz,
String methodName)
获取此方法名的具体 Method
|
private String |
getSql(org.apache.ibatis.plugin.Invocation invocation)
拼装SQL
|
private int |
indexOfSqlStart(String sql)
获取sql语句开头部分
|
Object |
intercept(org.apache.ibatis.plugin.Invocation invocation) |
void |
logRecord(String originalSql,
Object targetR,
List<Map<String,Object>> accessType,
long start,
long end,
long timing)
记录日志
|
Object |
plugin(Object target) |
private static final String DRUID_POOLED_PREPARED_STATEMENT
private static final String ORACLE_PREPARED_STATEMENT_WRAPPER
private Method oracleGetOriginalSqlMethod
private Method druidGetSqlMethod
SqlProperties sqlProperties
public Object intercept(org.apache.ibatis.plugin.Invocation invocation) throws Throwable
intercept 在接口中 org.apache.ibatis.plugin.InterceptorThrowableprivate List<Map<String,Object>> getAccessType(String originalSql, org.springframework.jdbc.core.JdbcTemplate jdbcTemplate)
@Async public void logRecord(String originalSql, Object targetR, List<Map<String,Object>> accessType, long start, long end, long timing)
originalSql - 执行的SQLtargetR - 传递的参数对象start - 开始的时间戳end - 结束的时间戳timing - 消耗时间private String getSql(org.apache.ibatis.plugin.Invocation invocation)
invocation - public Method getMethodRegular(Class<?> clazz, String methodName)
clazz - class 对象methodName - 方法名private int indexOfSqlStart(String sql)
sql - ignoreCopyright © 2022 jvs. All rights reserved.