您的位置:首页 > 数据库

mybatis下使用log4j打印sql语句和执行结果

2014-12-09 17:06 615 查看
本来以为很简单的问题,结果自己搞了半天还是不行;然后google,baidu,搜出来各种方法,有加slf4j*.jar的,有说去掉slf4j*.jar,还有说要配置mybatis.cfg.xml的,有的甚至一眼看上去就是不可能成功的.试了这么多,结果没有一个好用的.可能是版本不一致的问题?但是里面也注明是适用于什么版本的.具体原因就不知道了.

mybatis版本:3.2.3

log4j:1.2.17

后来参考了官方文档,才知道,其实只要配置mapper接口类或者配置文件中mapper的路径为debug就可以了.具体可参考这里.
里面还说明了,如果要打印sql语句的执行结果,需要设置为trace级别.

附上可以正常打印sql及运行结果的配置:

log4j.properties:

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的配置文件:

<mappernamespace="mapperNS.user">

<selectid="selectUser"parameterType="int"resultType="User">

<![CDATA[

select*fromuserwhereid=#{id}

]]>

</select>

</mapper>


打印结果:

2013-12-2713:16:56,335DEBUG[mapperNS.user.selectUser]-oooUsingConnection[com.mysql.jdbc.JDBC4Connection@2d8eef25]

2013-12-2713:16:56,344DEBUG[mapperNS.user.selectUser]-==>Preparing:select*fromuserwhereid=?

2013-12-2713:16:56,408DEBUG[mapperNS.user.selectUser]-==>Parameters:1(String)

2013-12-2713:16:56,430TRACE[mapperNS.user.selectUser]-<==Columns:id,name,sex,degree,birthdaty

2013-12-2713:16:56,436TRACE[mapperNS.user.selectUser]-<==Row:1,wang,1,1.00,1983-08-01

2013-12-2713:16:56,437DEBUG[mapperNS.user.selectUser]-<==Total:1

2013-12-2713:16:56,439INFO[action.UserAction]-User[id=1,name=wang,sex=1,birthday=null]


另一文章http://blog.csdn.net/isea533/article/details/22931341
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: