MyBatis:打印SQL 日志

配置Log4J比较简单, 比如需要记录这个mapper接口的日志:

package org.mybatis.example;
public interface BlogMapper {
  @Select("SELECT * FROM blog WHERE id = #{id}")
  Blog selectBlog(int id);
}

只要在应用的classpath中创建一个名称为log4j.properties的文件, 文件的具体内容如下:

# Global logging configuration
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.org.mybatis.example.BlogMapper=TRACE
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

添加以上配置后,Log4J就会把 org.mybatis.example.BlogMapper 的详细执行日志记录下来,对于应用中的其它类则仅仅记录错误信息。

也可以将日志从整个mapper接口级别调整到到语句级别,从而实现更细粒度的控制。如下配置只记录 selectBlog 语句的日志:

log4j.logger.org.mybatis.example.BlogMapper.selectBlog=TRACE

与此相对,可以对一组mapper接口记录日志,只要对mapper接口所在的包开启日志功能即可:

log4j.logger.org.mybatis.example=TRACE

某些查询可能会返回大量的数据,只想记录其执行的SQL语句该怎么办?为此,Mybatis中SQL语 句的日志级别被设为DEBUG(JDK Logging中为FINE),结果日志的级别为TRACE(JDK Logging中为FINER)。所以,只要将日志级别调整为DEBUG即可达到目的:

log4j.logger.org.mybatis.example=DEBUG

要记录日志的是类似下面的mapper文件而不是mapper接口又该怎么呢?

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.mybatis.example.BlogMapper">
  <select id="selectBlog" resultType="Blog">
    select * from Blog where id = #{id}
  </select>
</mapper>

对这个文件记录日志,只要对命名空间增加日志记录功能即可:

log4j.logger.org.mybatis.example.BlogMapper=TRACE

进一步,要记录具体语句的日志可以这样做:

log4j.logger.org.mybatis.example.BlogMapper.selectBlog=TRACE

看到了吧,两种配置没差别!

配置文件log4j.properties的余下内容是针对日志格式的,这一内容已经超出本 文档范围。关于Log4J的更多内容,可以参考Log4J的网站。不过,可以简单试一下看看,不同的配置 会产生什么不一样的效果。

时间: 2024-12-19 19:45:34

MyBatis:打印SQL 日志的相关文章

mybatis打印sql日志配置

<settings> <!-- 打印查询语句 --> <setting name="logImpl" value="STDOUT_LOGGING" /> </settings> LOG4J2,STDOUT_LOGGING,SLF4J,LOG4J,...

Java实战之路(1):SpringBoot项目中使用Mybatis打印Sql语句

SpringBoot项目中使用Mybatis打印Sql语句 如题,实际项目中使用很多都会用到SpringBoot+Mybatis的经典搭配进行开发,数据库里明明有数据,可是程序运行就是查不到,此时我们在本地Debug时,需要将Mybatis的实际Sql打印出来,看看Sql与我们期望的是否一致,或者将Sql拿到数据库中直接执行,看看结果.这里简单介绍几种实战中的用法. 方法一 properties:在application.properties配置文件中增加如下配置 logging.level.c

mybatis 打印sql log配置

mybatis 打印sql log, 方便调试.如何配置呢? log4j.xml : <!-- 打印sql start --> <appender name="IBatis" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="Conversi

mybatis结合log4j打印SQL日志

1.Maven引用jar包 默认的mybatis不能打印出SQL日志,不便于查看调试,须要结合log4jdbc-log4j2就能够完整的输入SQL的调试信息. pom.xml 配置maven.注意以下3个都须要 <dependency> <groupId>org.bgee.log4jdbc-log4j2</groupId> <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId> <version&g

Mybatis打印SQL

配置mybatis日志级别,打印SQL 1.方案一:配置日志级别 logging.level.org.springboot.demo.mapper=debug 其中org.springboot.demo.mapper目录是项目的mybatis接口包所在路径 这里配置的是springboot的配置文件,如果不是用spring boot构建项目,需要在具体的日志组件下配置 2.方案二:修改mybatis配置文件 在mybatis的全局配置文件中添加如下配置 <setting name="log

logback mybatis 打印sql语句

logbac.xml 文件的基础配置参考的园友的 http://www.cnblogs.com/yuanermen/archive/2012/02/13/2349609.html 然后hibernate 和 jpa 相关的sql能够打印.后来整合mybatis发现不能打印sql.后参考 http://clojure.iteye.com/blog/2031318 的评论发现了网友提示 照你说的配置后,仍不能显示sql.倒是看了这个后,成功了.http://stackoverflow.com/que

mybatis 打印 sql

该文中使用的log框架为logback myBatis3.0.6左右的版本时 打印sql的时候只需要配置如下属性: <logger name="java.sql.Connection" level="DEBUG" /> <logger name="java.sql.Statement" level="DEBUG" /> <logger name="java.sql.PreparedSta

SpringBoot中Mybatis打印sql(转)

原文地址:https://www.cnblogs.com/expiator/p/8664977.html 如果使用的是application.properties文件,加入如下配置: logging.level.com.example.demo.dao=debug logging.level.com,后面的路径指的是mybatis对应的方法接口所在的包.并不是mapper.xml所在的包. 如果使用的是application.xml文件,加入如下配置: # 打印sql logging: leve

SpringBoot中Mybatis打印sql

原文:https://www.cnblogs.com/expiator/p/8664977.html 如果使用的是application.properties文件,加入如下配置: logging.level.com.example.demo.dao=debug logging.level.com,后面的路径指的是mybatis对应的方法接口所在的包.并不是mapper.xml所在的包. 如果使用的是application.yml文件,加入如下配置: # 打印sql logging: level: