如何在mybatis中打印sql
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在mybatis中打印sql相关的知识,希望对你有一定的参考价值。
mybatis默认使用log4j,当有self4j这个日志jar包存在时会无法打印sql,请移除或者在工程启动时显示设置mybatis使用的日志类:log4j.logger.org.apache.ibatis=debug,stdout log4j.logger.java.sql=debug,stdout
这样有时可能却不是个可行的办法,原因在于不可能移除self4j包,因为其他依赖包必须依赖这个包。 mybatis有如下方法来手动选择日志类,调用后成功打印日志 如果引用了slf4j的包,并且要使用log4j需要加入slf4j-log4j12的包,如果没有加入slf4j-log4j12的包是无法打印sql的。。具体log4j文件如下:
log4j.rootCategory=info, stdout , R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.Conversion
Pattern=[QC] %p [%t] %C.%M(%L) | %m%n
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=D:\\report.log
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n
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,stdout
现在重启tomcat,执行一条语句看看,sql是不是都出来了 参考技术A mybatis打印sql 用于在后台打印执行的sql,在applicationContext.xml中的<bean
id="sqlSessionFactory" 标签中添加:
<property name="configLocation"
value="classpath:mybatis-config.xml" /> 即可打印sql语句 此方法仅用于开发调试,配置之后请勿提交!本回答被提问者采纳
mybatis的Sql语句打印
我们在使用mybatis的时候,有时候,希望可以在eclipse的控制台下打印出来sql语句,但是有时候却不希望相关的语句打印。这个时候,需要我们进行一些配置。
在mybatis中,他通过调用一些接口,实现它的日志功能。mybatis在输出和打印日志的时候,会按照先调用容器自带的输出日志接口,如果没有再调用log4j的方式,进行日志的功能的实现。如果都没有,那么就不再提供日志功能,这个时候,它是不打印日志信息的。
那么,我们怎么配置使得控制台打印或者是不打印我们的sql语句呢?
在log4j的配置文件log4j.properties的文件中,有这么个配置信息:
#ibatis logger config 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,stdout
其中,如果不想打印相应的信息,那么,直接将debug改为info级别就可以了。它总过有五个级别可以设置:all<debug<info<warn<error 你可以根据自己的需求,配置自己需要打印的信息。
以上是关于如何在mybatis中打印sql的主要内容,如果未能解决你的问题,请参考以下文章