如何用mybatis-plus mapper类调用时获取到sql语句
时间: 2024-03-06 15:51:15 浏览: 111
要在使用 MyBatis-Plus Mapper 类执行 SQL 语句时获取 SQL 语句,可以使用 MyBatis 的拦截器机制,在执行 SQL 语句前后记录 SQL 语句并输出到日志中。
具体实现步骤如下:
1. 创建一个实现了 MyBatis 的 Interceptor 接口的拦截器类,例如 SqlLogInterceptor。
2. 在 SqlLogInterceptor 中实现 intercept 方法,在该方法中获取当前执行的 SQL 语句,并将其记录到日志中。
3. 在 MyBatis 的配置文件中将 SqlLogInterceptor 添加到插件列表中。
以下是 SqlLogInterceptor 的基本实现代码:
```
public class SqlLogInterceptor implements Interceptor {
@Override
public Object intercept(Invocation invocation) throws Throwable {
// 获取 SQL 语句
MappedStatement mappedStatement = (MappedStatement) invocation.getArgs()[0];
Object parameterObject = invocation.getArgs()[1];
BoundSql boundSql = mappedStatement.getBoundSql(parameterObject);
String sql = boundSql.getSql();
// 记录 SQL 语句到日志中
System.out.println("SQL: " + sql);
// 继续执行 SQL 语句
return invocation.proceed();
}
@Override
public Object plugin(Object target) {
return Plugin.wrap(target, this);
}
@Override
public void setProperties(Properties properties) {
// 设置属性
}
}
```
在 MyBatis 的配置文件中,将 SqlLogInterceptor 添加到插件列表中:
```
<plugins>
<plugin interceptor="com.example.SqlLogInterceptor"/>
</plugins>
```
这样,在使用 MyBatis-Plus Mapper 类执行 SQL 语句时,就能够在控制台或日志文件中看到 SQL 语句了。
阅读全文