Mybatis控制檯打印sql語句

用到的jar包是:java

<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.7.13</version>
		</dependency>

		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.3.1</version>
		</dependency>

log4j.properties文件內容以下:sql

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 %p [%c] -%m%n  
 
 
log4j.logger.com.ibatis=debug
#print package soc.dao  sql 
log4j.logger.soc.dao=debug
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug
log4j.logger.java.sql.Connection=debug
log4j.logger.java.sql.Statement=debug
log4j.logger.java.sql.PreparedStatement=debug,stdout

上面 最關鍵的一個配置是:log4j.logger.soc.dao=debug,沒有這行,則不管jar包是log4j仍是slf4j都不會打印sql,不管log4j.rootLogger=info,stdout仍是log4j.rootLogger=debug,stdout,也不會打印。apache

這句配置的意思是將與mybatis mapper文件對應的dao層所在的package下的debug信息打印出來,即「log4j.logger.本身的與mapper文件對應的dao層所在的包=debug」。mybatis

log4j的日誌優先級從高到低依次是:OFF FATAL ERROR WARN INFO DEBUG TRACE ALL,當設置了低級別時,該低級別及高於該級別的信息都會被打印出來。如定義級別爲debug,則OFF FATAL ERROR WARN INFO信息都會打印出來。因此本例中,log4j.logger.soc.dao=trace也是能夠的,這樣打出的信息會更詳細於debug。app

擴展:有時多人多模塊開發時,會有多個project,僅在其中一個起管理做用(即main方法全部項目,啓動時會加載其他的模塊)的project下配置了log4j.xml,如放在一個單獨的目錄conf下,這時啓動查詢時,控制檯並未打出sql語句,不是log4j.xml設置的有問題,而是未將其加入到classpath下,方法是:右鍵conf文件夾-->Build Path-->use as source folder。ui

相關文章
相關標籤/搜索