mybatisplus interceptor 如何拿到完整的sql
时间: 2023-07-09 12:20:26 浏览: 51
MybatisPlus 的 SQL 拦截器可以通过 `StatementHandler` 对象获取完整的 SQL 语句。具体实现方式如下:
1. 自定义一个拦截器类,实现 `Interceptor` 接口。
2. 在 `intercept` 方法中获取 `StatementHandler` 对象,然后通过 `getBoundSql()` 方法获取 `BoundSql` 对象。
3. 最后调用 `BoundSql` 对象的 `getSql()` 方法即可获取完整的 SQL 语句。
以下是一个示例代码:
```java
public class MyInterceptor implements Interceptor {
@Override
public Object intercept(Invocation invocation) throws Throwable {
StatementHandler statementHandler = (StatementHandler) invocation.getTarget();
BoundSql boundSql = statementHandler.getBoundSql();
String sql = boundSql.getSql();
// 处理完整的 SQL 语句
return invocation.proceed();
}
@Override
public Object plugin(Object target) {
return Plugin.wrap(target, this);
}
@Override
public void setProperties(Properties properties) {
// 设置属性
}
}
```
在 Mybatis 的配置文件中,需要将该拦截器配置到 `interceptors` 中,如下所示:
```xml
<configuration>
<plugins>
<plugin interceptor="com.example.MyInterceptor">
<!-- 设置属性 -->
</plugin>
</plugins>
</configuration>
```