mybatis-plus 开启与关闭 SQL 日志打印

开启打印

Mybatis-plus 需要通过下面的方式开启控制台 SQL 日志打印

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

对于 application.properties 文件,可以通过下面的方式关闭:

mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

关闭打印

在生产环境,不想打印 SQL 日志,可以通过下面的配置关闭。

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl

对于 application.properties 文件

mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.nologging.NoLoggingImpl

有时候,这个 log-impl 的值是通过外界传入的,通过配置的形式控制 SQL 打印效果,则可以:

mybatis-plus:
  configuration:
    log-impl: ${mybatis-plus-log-impl}

${mybatis-plus-log-impl} 不同的值就能实现。

mybatis-plus 日志实现

mybatis-plus 目前有如下的日志实现:

  • JakartaCommonsLoggingImpl
  • Jdk14LoggingImpl
  • Log4j2AbastactLoggerImpl
  • Log4j2Impl
  • Log4j2LoggerImpl
  • Log4jImpl
  • NoLoggingImpl
  • Slf4jImpl
  • Slf4jLocationAwareLoggerImpl
  • Slf4jLoggerImpl
  • StdOutImpl

有这么多实现,运行的时候采用哪个呢:

    static {
        tryImplementation(LogFactory::useSlf4jLogging);
        tryImplementation(LogFactory::useCommonsLogging);
        tryImplementation(LogFactory::useLog4J2Logging);
        tryImplementation(LogFactory::useLog4JLogging);
        tryImplementation(LogFactory::useJdkLogging);
        tryImplementation(LogFactory::useNoLogging);
    }

mybatis-plus 有个 LogFactory 的日志工厂来处理这件事,实际上执行的时候,它会使用最先找到的,如果一个都未找到,日志功能就会被禁用。

如何知道现在使用的哪种方式

在项目启动时,会在控制台直接打印如下提示:

Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter.

扩展自己的日志实现

虽然 mybatis 已经提供了非常多的日志实现,但是还是留了口子给需要自定义的使用者。

在 LogFactory 中,有一行:

useCustomLogging(Class<? extends Log> clazz)

也就是说,我们可以通过自己实现 Log 接口来扩展自己日志输出。

IDEA 插件

如果使用 IDEA 开发程序,使用mybatis 时,建议安装 Mybatis Log 插件,该插件可以方便地查看执行的SQL语句,并且将控制台输出的 SQL 中 ? 部分替换成真实运行时的值,便于直接复制到 Navicat 等工具中直接执行。

  • 43
    点赞
  • 130
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
### 回答1: 在MyBatis-Plus开启SQL打印可以通过在配置文件中设置log4j或者logback的日志级别来实现。具体步骤如下: 1. 在pom.xml文件中添加log4j或者logback的依赖。 2. 在配置文件中添加log4j或者logback的配置,设置日志级别为DEBUG。 3. 在MyBatis-Plus的配置文件中添加如下配置: ``` mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl ``` 这样就可以在控制台输出SQL语句了。 ### 回答2: Mybatis-Plus是一款基于Mybatis的快速开发框架,它对Mybatis进行了封装和增强,简化了Mybatis的使用,提高了开发效率。在开发过程中,我们往往需要打印SQL语句以便于调试和优化,下面介绍如何在Mybatis-Plus开启SQL打印。 1. 配置文件中添加日志输出配置 在application.yml或application.properties配置文件中添加如下日志输出配置,其中logLevel可以设置为debug或trace。 logging: level: com.baomidou.mybatisplus.core.conditions: debug #mybatis-plus的condition日志输出级别 com.baomidou.mybatisplus.core.parser: debug #mybatis-plus的解析日志输出级别 com.baomidou.mybatisplus.core.MybatisConfiguration: debug #mybatis的配置日志输出级别 2. 改变Mybatis-Plus日志框架为Log4j2 在pom.xml文件中添加如下依赖,将Mybatis-Plus日志框架改为Log4j2。 <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> </dependency> 3. 使用Mybatis-Plus的Interceptor Mybatis-Plus提供了一个Interceptor接口,通过实现该接口可以在SQL执行前后进行拦截,并打印SQL语句。 在Mybatis-Plus的配置类中添加如下配置: @Configuration public class MybatisPlusConfig { @Bean public ISqlInjector sqlInjector() { return new LogicSqlInjector(); } @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); } @Bean public PerformanceInterceptor performanceInterceptor() { PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor(); performanceInterceptor.setMaxTime(30000); return performanceInterceptor; } @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(new Interceptor() { @Override public void beforeExecute(StatementHandler statementHandler, Connection connection, Integer integer) { BoundSql boundSql = statementHandler.getBoundSql(); String sql = boundSql.getSql(); System.out.println("SQL: " + sql); } @Override public void afterExecute(StatementHandler statementHandler, Connection connection, Integer integer, Throwable throwable) { } @Override public void afterClose(StatementHandler statementHandler, Connection connection, Boolean aBoolean) { } }); return interceptor; } } 以上为Mybatis-Plus开启SQL打印的三种方法,任选其一即可。实际开发中,可以根据项目需求选择最恰当的方法。 ### 回答3: MyBatis-PlusMyBatis的增强工具,在实际开发中,开启SQL打印是一件非常重要的事情。开启SQL打印可以方便地查看和调试MyBatis-Plus所生成的SQL语句,从而更好地优化程序性能。 MyBatis-Plus提供了两种方法来开启SQL打印: 1.在application.yml或application.properties文件中添加如下配置: ``` mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl ``` 该配置的作用是将MyBatis-Plus日志输出到控制台,包括SQL语句和参数。在控制台中可以看到类似如下的输出: ``` DEBUG [main] : ==> Preparing: SELECT * FROM user WHERE name = ? DEBUG [main] : ==> Parameters: test(String) ``` 可以清晰地看到MyBatis-Plus所生成的SQL语句和参数。 2.在MyBatis的XML配置文件中添加如下配置: ``` <configuration> <settings> <setting name="logImpl" value="STDOUT_LOGGING"/> </settings> </configuration> ``` 该配置的作用是开启MyBatis日志输出,也包括SQL语句和参数。在控制台中可以看到类似如下的输出: ``` DEBUG [main] - ==> Preparing: SELECT * FROM user WHERE name = ? DEBUG [main] - ==> Parameters: test(String) ``` 可以发现,该配置的输出与第一种方法的输出基本相同。 总的来说,开启SQL打印可以方便地查看和调试MyBatis-Plus所生成的SQL语句,有助于优化程序性能。在实际开发中,应该根据具体情况选择合适的配置方法。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cj96248

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值