Springboot应用中Mybatis输出SQL日志的三种方法
在Spring Boot应用中,你可以通过以下三种方式配置MyBatis以输出SQL日志:
- 在
application.properties
或application.yml
文件中添加配置:
# application.properties
logging.level.mybatis=DEBUG
logging.level.com.example.mapper=TRACE
或者使用YAML格式:
# application.yml
logging:
level:
mybatis: DEBUG
com.example.mapper: TRACE
这里com.example.mapper
是你的Mapper接口所在的包路径。
- 在MyBatis的配置文件中设置日志实现:
在mybatis-config.xml
中添加以下配置:
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
- 使用自定义的日志实现:
创建自定义的日志类并实现Interceptor
接口,然后在mybatis-config.xml
中进行配置:
import org.apache.ibatis.executor.statement.StatementHandler;
import org.apache.ibatis.logging.Log;
import org.apache.ibatis.logging.LogFactory;
import org.apache.ibatis.plugin.*;
import java.sql.Connection;
import java.util.Properties;
@Intercepts({@Signature(
type = StatementHandler.class,
method = "prepare",
args = {Connection.class, Integer.class}
)})
public class SqlStatementInterceptor implements Interceptor {
private static final Log logger = LogFactory.getLog(SqlStatementInterceptor.class);
@Override
public Object intercept(Invocation invocation) throws Throwable {
StatementHandler statementHandler = (StatementHandler) invocation.getTarget();
String sql = statementHandler.getBoundSql().getSql();
logger.info("SQL: " + sql);
return invocation.proceed();
}
@Override
public Object plugin(Object target) {
return Plugin.wrap(target, this);
}
@Override
public void setProperties(Properties properties) {}
}
然后在mybatis-config.xml
中添加:
<plugins>
<plugin interceptor="com.example.SqlStatementInterceptor">
<!-- 这里可以配置一些属性 -->
</plugin>
</plugins>
以上三种方法均可以在Spring Boot应用中输出MyBatis的SQL日志。选择哪种方法取决于你的具体需求和项目结构。
评论已关闭