mybatis打印执行sql,不打印row、columns
时间: 2024-10-12 20:07:21 浏览: 27
mybatis 插件: 打印 sql 及其执行时间实现方法
5星 · 资源好评率100%
MyBatis是一个流行的持久层框架,它默认会将SQL查询语句作为日志输出,包括执行计划(row、columns等)。如果你希望在调试阶段查看SQL但是不想在生产环境中暴露敏感信息,可以采取以下步骤:
1. **配置文件设置**:在`mybatis-config.xml` 或者 `application.properties` 文件中,添加以下内容来关闭日志详细输出:
```xml
<configuration>
<logFactory type="LOG4J" />
<!-- 只保留基本信息 -->
<properties resource="mybatis/log4j.properties">
<property name="org.apache.ibatis.logging.jdbc.logLevel" value="INFO" />
</properties>
</configuration>
```
或
```properties
mybatis.logging.level.jdk=ERROR
mybatis.logging.use.stdout=false
```
2. **自定义Log4j配置**:创建一个名为`log4j.properties` 的文件,配置`STDOUT_LOG_PATTERN`,只显示SQL语句和时间:
```properties
# log4j2.xml or log4j.properties
log4j.rootLogger=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n
```
3. **使用ProfilingLogger**:如果你使用的是Spring Boot,你可以禁用MyBatis的默认SQL logging并启用Profiler,这只会记录SQL而不包含详细数据。
在Spring Boot的`application.properties` 中加入:
```
mybatis.profiler.enabled=true
```
通过上述调整,MyBatis将仅在控制台或指定的日志器上打印出基础的SQL执行信息,不会包含row和columns等敏感内容。在完成开发后记得在生产环境恢复到安全的日志级别设置。
阅读全文