ibatis 查看执行时候的sql语句

有两种方法

方法一:修改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语句了

 

 

 

 

你可能感兴趣的:(spring,sql,log4j,bean,ibatis)