如何在mybatis中調試查看生成的sql語句?
主要是查看有&
& && 這樣的條件,如何在eclipse中查看生成的sql語句?
方法:
MyBatis 的配置文件 Configuration 中有相關屬性,設屬性即可,不用再放一個 log4j.properties 文件。
&
&
&
配置完成後,在 IDE 的控制台下可以看到程序運行過程中的 SQL,參數,返回結果等,
可以參照 API 文檔,mybatis - MyBatis 3 中關於 settings 的描述
如需要第三方日誌,在項目 src 目錄下放相應的配置文件即可。MyBatis 會自動識別。原理:
參照文檔,可以看到 mybatis 支持這些日誌:
- SLF4J
- LOG4J
- LOG4J2
- JDK_LOGGING
- COMMONS_LOGGING
- STDOUT_LOGGING
- NO_LOGGING
我們可以看到,MyBatis 支持的日誌種類還是比較多的。其他的不做贅述 。就來說說STDOUT_LOGGING ,stdout 翻譯是 [計][unix] 標準輸出(設備)文件; 所以,簡單可以理解為命令行輸出的結果。記得之前用一很老的 web 伺服器 resin,日誌文件就保存在 stdout.log、stderr.log 中。按照這個推理,stdout 就是在控制台輸出的。但是,要用事實說話。我去翻了下這裡的源碼:
在 Configuration.java中可以看到如下代碼
typeAliasRegistry.registerAlias("STDOUT_LOGGING", StdOutImpl.class);
再看 StdOutImp.java
@Override
public void error(String s) {
System.err.println(s);
}
@Override
public void debug(String s) {
System.out.println(s);
}
@Override
public void trace(String s) {
System.out.println(s);
}
顯而易見,STDOUT_LOGGING 這種方式就是輸出在了控制台上。在 IDE 中是控制台,在伺服器上就是 web 伺服器的輸出日誌中了。
我推薦使用log4jdbc或是log4jdbc-remix,其實這2個都差不多,這個會把你sql的的?以實際的值填充進去,對查看生成的sql非常有幫助
如果你用SpringBoot,那麼在application.properties文件加入以下語句就好了:logging.level.com.xxx.xxx.*.mapper=debug(com開始,就是你mapper介面所在的包路勁)
號外:SpringBoot真是好東西啊。
mybatis的源碼中,那一款方法是生成sql的?
把我代碼里log的配置貼一份 供參考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
推薦閱讀:
TAG:MyBatis |