有两种方法
方法一:修改log4j的配置文件,添加以下内容:
# SqlMap logging configuration... 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 log4j.logger.java.sql.ResultSet=DEBUG
方法二:在项目中使用p6spy(这里先假定在项目中使用了spring,当然不使用spring也是可以使用这个包查看sql的,不过配置就不是这样配置了)
去http://www.p6spy.com/survey.html下载p6spy-install.zip,解压里面的p6spy.jar到/web-inf/lib目录中
1. 在spring的配置文件中添加P6DataSource。列出部分配置代码如下:
<!-- 配置数据源,这里数据源使用的是c3p0 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="${connection.driver_class}" /> <property name="jdbcUrl" value="${connection.url}" /> <property name="user" value="${connection.username}" /> <property name="password" value="${connection.password}" /> <property name="minPoolSize" value="${c3p0.minPoolSize}" /> <property name="maxPoolSize" value="${c3p0.maxPoolSize}" /> <property name="initialPoolSize" value="${c3p0.initialPoolSize}" /> <property name="maxIdleTime" value="${c3p0.maxIdleTime}" /> <property name="acquireIncrement" value="${c3p0.acquireIncrement}" /> <property name="maxStatements" value="${c3p0.maxStatements}" /> <property name="idleConnectionTestPeriod" value="${c3p0.idleConnectionTestPeriod}" /> <property name="acquireRetryAttempts" value="${c3p0.acquireRetryAttempts}" /> <property name="breakAfterAcquireFailure" value="${c3p0.breakAfterAcquireFailure}" /> <property name="testConnectionOnCheckout" value="${c3p0.testConnectionOnCheckout}" /> </bean>
<!-- spy dataSource --> <bean id="spyDataSource" class="com.p6spy.engine.spy.P6DataSource"> <constructor-arg> <ref local="dataSource"/> </constructor-arg> </bean>
<!-- sqlMapClent 配置 --> <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> <property name="configLocation" value="classpath:SqlMapConfig.xml" /> <property name="dataSource" ref="spyDataSource" /> </bean>
2. 在下载的p6spy-install.zip包中找到spy.properties,复制到classpath中,并且修改以下参数。
#realdriver=org.gjt.mm.mysql.Driver #第54行注释掉 dateformat=yyyy-MM-dd HH\:mm\:ss,SSS #输出的时候加上时间,方便查看 #appender=com.p6spy.engine.logging.appender.Log4jLogger #不清楚干嘛用的,没用,注释掉 appender=com.p6spy.engine.logging.appender.StdoutLogger #在控制台输出,一般我们都用控制台输出 #appender=com.p6spy.engine.logging.appender.FileLogger #输出在文件里,这样控制台上就看不到了 logfile=d:/logs/IbatisDemo- spy.log #sql语句的输出位置,只有appender选择的是文件的时候,这个选项有效 log4j.logger.p6spy=warn,STDOUT #把info改成warn,少看些没用的信息
一般有用的配置就这些了,还有其它的一些参数没去研究是什么用处,有空再研究研究。
好了,配置好以上内容,在代码执行到数据库操作的时候,p6spy就会自动在控制台输出sql语句了,不只可以在ibatis上使用,在hibernate上也可以用,在hibernate上用的时候,就不用再去看它自动生成的那难看的sql语句了