使用p6spy监控Spring+Ibatis/Hibernate SQL输出

  本文同步来源: http://www.luoyl.com/blog/18

 

目前很多公司的项目都采用了ssh或ssi框架,在该框架下的SQL输出串不能显示SQL语句里所包含的参数,调试起来相当麻烦。通过P6spy框架来进行SQL监视,可以将SQL MAP中的SQL语句包含参数完整输出。

以下p6spy与ssh/ssi整合的方法:
 
1. 在p6spy官方网站,下载p6spy.jar,放在lib目录下,将spy.properties放在 web-inf/classes下面(工作区最好是英文目录且无空格)。


2. 修改spy.properties,把realdriver 改为项目里使用的JDBC驱动名,如 realdriver=com.mysql.jdbc.Driver,其他的realdriver全部用#注释掉,修改 logfile=指定的SQL日志输出文件,如 logfile = d:/spy.log ,生成的SQL将会被写到到这个文件,只要执行SQL后查看该文件即可。

3.如果spy.log里出现以下异常:
  <配置了的程序的数据库驱动名称> is a real driver in spy.properties, but it has been loaded before p6spy. p6spy will not wrap these connections. Either prevent the driver from loading, or try setting 'deregisterdrivers' to true in spy.properties
  需把spy.properties文件里的deregisterdrivers=false改为deregisterdrivers=true,然后重新运行。

 

4. 修改Spring配置文件,一般是applicationContext.xml
    把原来的数据源定义注释掉,然后加入以下配置:
    <bean id="dataSourceTarget" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="(jdbc驱动名,如com.mysql.jdbc.Driver)" />      
    <property name="url" value="<URL>" />      
    <property name="username" value="<用户名>" />      
    <property name="password" value="<密码>" />
  </bean>
 
  <bean id="dataSource" class="com.p6spy.engine.spy.P6DataSource" destroy-method="close">         
        <constructor-arg>         
            <ref local="dataSourceTarget"/>         
        </constructor-arg>         
    </bean> 


5. 完成。

你可能感兴趣的:(Hibernate)