| New file | 
 |  |  | 
 |  |  | package com.dy.common.mybatis; | 
 |  |  |  | 
 |  |  | import lombok.extern.slf4j.Slf4j; | 
 |  |  | import org.apache.ibatis.executor.Executor; | 
 |  |  | import org.apache.ibatis.mapping.BoundSql; | 
 |  |  | 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.Configuration; | 
 |  |  | import org.apache.ibatis.session.ResultHandler; | 
 |  |  | import org.apache.ibatis.session.RowBounds; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * @Author: liurunyu | 
 |  |  |  * @Date: 2024/12/13 9:53 | 
 |  |  |  * @Description | 
 |  |  |  */ | 
 |  |  | /** | 
 |  |  |  * 拦截执行SQL执行场景,并将SQL打印出来 | 
 |  |  |  * 拦截Executor里面的query和update方法 | 
 |  |  |  */ | 
 |  |  | @Intercepts({ | 
 |  |  |         @Signature( | 
 |  |  |                 method = "query", | 
 |  |  |                 type = Executor.class, | 
 |  |  |                 args = { | 
 |  |  |                         MappedStatement.class, | 
 |  |  |                         Object.class, | 
 |  |  |                         RowBounds.class, | 
 |  |  |                         ResultHandler.class | 
 |  |  |                 } | 
 |  |  |         ), | 
 |  |  |         @Signature( | 
 |  |  |                 type = Executor.class, | 
 |  |  |                 method = "update", | 
 |  |  |                 args = { | 
 |  |  |                         MappedStatement.class, | 
 |  |  |                         Object.class | 
 |  |  |                 } | 
 |  |  |         ) | 
 |  |  | }) | 
 |  |  | @Slf4j | 
 |  |  | public class PrintSqlInterceptor  implements Interceptor { | 
 |  |  |     @Override | 
 |  |  |     public Object intercept(Invocation invocation) throws Throwable { | 
 |  |  |         Object[] args = invocation.getArgs(); | 
 |  |  |  | 
 |  |  |         if (args != null && args.length > 1) { | 
 |  |  |             MappedStatement mappedStatement = (MappedStatement) args[0]; | 
 |  |  |             Object parameter = args[1]; | 
 |  |  |  | 
 |  |  |             String sqlId = mappedStatement.getId(); | 
 |  |  |             BoundSql boundSql = mappedStatement.getBoundSql(parameter); | 
 |  |  |             Configuration configuration = mappedStatement.getConfiguration(); | 
 |  |  |             log.info("\nSQL Id: " + sqlId + "\nSQL Parameters: " + boundSql.getParameterObject() + "\nSQL: " + PrintSqlHelp.getFullSql(configuration, boundSql) + "\n"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         return invocation.proceed(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } |