MyBatis学习(五)

75 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第35天,点击查看活动详情

MyBatis中的日志配置

上一篇文章我们讲完了映射文件,映射文件将xml中的insert、upadte、select、delete语句和Java类中的方法对应起来。在映射文件里还可以配置结果集和Java对象的映射,数据库字段和Java属性也是在这里配置的。

有了映射文件和接口之后,我们就可以从MyBatis中获取Mapper对象,通过操作mapper对象将绑定的SQL语句发送给数据库。在程序运行的过程中,MyBatis发送了什么语句,有可能我们需要看到,帮助排查问题,所以MyBatis提供了日志功能。接下来看下MyBatis中是怎么配置日志的。

Mybatis 通过使用内置的日志工厂提供日志功能。内置的日志支持以下几种日志:

  • SLF4J
  • Apache Commons Logging
  • Log4j 2
  • Log4j (3.5.9 起废弃)
  • JDK logging

MyBatis是通过反射进行日志实现获取的,我们只需要将日志包引入到类路径中,MyBatis就可以进行日志记录,否则什么都不记录。

如果路径中引入了多个实现,那MyBatis会使用以上出现的顺序,第一个出现的将会被使用,如果想使用特定的日志,则需要在配置文件中加入自己的配置,如下:

<configuration>
  <settings>
    ...
    <setting name="logImpl" value="LOG4J"/>
    ...
  </settings>
</configuration>

启用步骤

启用MyBatis的日志首先要引入包,这里以SLF4J(Logback) 为例,如果你用Maven的话,可以在pom文件中加入以下内容:

<dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-classic</artifactId>
  <version>1.x.x</version>
</dependency>

第二步,配置Logback,需要新增一个配置文件logback.xml,具体的内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>
<configuration>

  <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%5level [%thread] - %msg%n</pattern>
    </encoder>
  </appender>

  <logger name="org.mybatis.example.BlogMapper">
    <level value="trace"/>
  </logger>
  <root level="error">
    <appender-ref ref="stdout"/>
  </root>

</configuration>

添加完成以后,MyBatis就会在控制台打印出发出的SQL语句了,其它日志的配置同理,有需要可以参考官方文档。