原本覺得很簡單的問題, 結果本身搞了半天仍是不行; 而後google, baidu, 搜出來各類方法, 有加slf4j*.jar的,有說去掉slf4j*.jar,還有說要配置mybatis.cfg.xml的, 有的甚至一眼看上去就是不可能成功的. 試了這麼多, 結果沒有一個好用的. 多是版本不一致的問題? 可是裏面也註明是適用於什麼版本的. 具體緣由就不知道了.html
mybatis版本: 3.2.3mysql
log4j:1.2.17git
後來參考了官方文檔, 才知道, 其實只要配置mapper接口類或者配置文件中mapper的路徑爲debug就能夠了. 具體可參考這裏. 裏面還說明了, 若是要打印sql語句的執行結果, 須要設置爲trace級別. github
附上能夠正常打印sql及運行結果的配置:sql
log4j.properties:apache
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
# 打印sql語句:debug; 執行結果:trace
## 指定mapper配置文件中的namespace
log4j.logger.mapperNS =TRACE
mapper的配置文件:mybatis
<mapper namespace="mapperNS.user">
<select id="selectUser" parameterType="int" resultType="User">
<![CDATA[
select * from user where id = #{id}
]]>
</select>
</mapper>
打印結果:app
2013-12-27 13:16:56,335 DEBUG [mapperNS.user.selectUser] -ooo Using Connection [com.mysql.jdbc.JDBC4Connection@2d8eef25]
2013-12-27 13:16:56,344 DEBUG [mapperNS.user.selectUser] -==> Preparing: select * from user where id = ?
2013-12-27 13:16:56,408 DEBUG [mapperNS.user.selectUser] -==> Parameters: 1(String)
2013-12-27 13:16:56,430 TRACE [mapperNS.user.selectUser] -<== Columns: id, name, sex, degree, birthdaty
2013-12-27 13:16:56,436 TRACE [mapperNS.user.selectUser] -<== Row: 1, wang, 1, 1.00, 1983-08-01
2013-12-27 13:16:56,437 DEBUG [mapperNS.user.selectUser] -<== Total: 1
2013-12-27 13:16:56,439 INFO [action.UserAction] -User [id=1, name=wang, sex=1, birthday=null]
其間還有個小問題, 也記錄一下:google
提示:spa
log4j:WARN No appenders could be found for logger (org.apache.ibatis.logging.LogFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
這種狀況下沒有打印出日誌, 說明應用並無對log4j進行初始化. 解決方法是要在應用啓動時就進行
// 這裏的路徑根目錄是指應用的根目錄,而不是classes目錄
PropertyConfigurator.configure("bin/conf/log4j.properties");