Mybatis在控制檯列印sql
阿新 • • 發佈:2018-12-29
搜尋資料只能利用log4j實現
這裡只是添加了一些說明
網上log4j.properties檔案中mybatis列印sql的配置
#DEBUG < INFO < WARN < ERROR < FATAL ### set log levels ### log4j.rootLogger=debug, stdout ### 把日誌資訊輸出到控制檯 ### log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p [%c] %m%n ### show sql ### log4j.logger.com.ibatis=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
這種方法是可以列印sql的,但是因為是debug級別,導致控制檯輸出了很多無用的debug資訊,對檢查sql依然不好找,所以這種方法不推薦
優化解決方案
因為我們一般設定log4j都是info級別的log4j.rootLogger=info, stdout
,但log4j支援對各個模組設定日誌級別,所以只需要對列印sql的那一些類設定debug級別就可以了,配置如下:
在log4j.properties中新增下面一行
log4j.logger.com.web.dao=debug
語法解釋:log4j.logger.[package].[class]=[level],[appender]
[package]
包路徑,如上面的 com.web.dao 包[class]
類名,可不寫[level]
日誌級別, debug[appender]
日誌輸出的地址,可忽略
這樣就可以把com.web.dao
包下的所有類裡的sql打印出來
如:
2016-09-22 00:00:00 DEBUG [com.web.dao.UserMapper.selectByPrimaryKey] ==> Preparing: select `id` ,`name` ,`pwd` from user where `id` = ? 2016-09-22 00:00:00 DEBUG [com.web.dao.UserMapper.selectByPrimaryKey] ==> Parameters: 1(String) 2016-09-22 00:00:00 DEBUG [com.web.dao.UserMapper.selectByPrimaryKey] <== Total: 1