开启打印

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 等工具中直接执行。

更多推荐

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