-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPlugin.java
36 lines (29 loc) · 1.36 KB
/
Plugin.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package com.example.plugin;
import org.apache.ibatis.executor.Executor;
import org.apache.ibatis.mapping.MappedStatement;
import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.plugin.Intercepts;
import org.apache.ibatis.plugin.Invocation;
import org.apache.ibatis.plugin.Signature;
import org.apache.ibatis.session.ResultHandler;
import org.apache.ibatis.session.RowBounds;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Arrays;
@Intercepts({
@Signature(type = Executor.class, method = "query", args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class})
})
public class Plugin implements Interceptor {
private static final Logger log = LoggerFactory.getLogger(PluginMain.class);
@Override
public Object intercept(Invocation invocation) throws Throwable {
log.info("[invocation] method: {}, arg: {}, target: {}", invocation.getMethod(), Arrays.toString(invocation.getArgs()), invocation.getTarget());
if (invocation.getArgs()[0] instanceof MappedStatement statement) {
log.info("[invocation] sql: {}", statement.getBoundSql(null).getSql());
log.info("[invocation] parameter: {}", statement.getBoundSql(null).getParameterMappings());
}
Object res = invocation.proceed();
log.info("[invocation] res: {}", res);
return res;
}
}