文档章节

使用P6Spy打印sql语句方便进行调试

开源中国首席观察员
 开源中国首席观察员
发布于 2014/11/12 16:15
字数 272
阅读 135
收藏 2

1、jar包下载   p6spy-1.3.jar.zip

2、新建spy.properties

#module.log=com.p6spy.engine.logging.P6LogFactory
#重写P6LogFactory
module.log=com.spy.test.P6LogFactory
#设置应用真正使用的JDBC Driver
realdriver=com.mysql.jdbc.Driver
#设置使用p6spy driver来做代理
deregisterdrivers=true
#取消JDBC URL前缀,if=true then url must be prefixed with p6spy:
useprefix=true
#配置记录Log例外,可去掉的结果集有error,info,batch,debug,statement,commit,rollback,result,resultset.
excludecategories=info,debug,result,batch,resultset
#日志输出到控制台
appender=com.p6spy.engine.logging.appender.StdoutLogger
#时间格式
dateformat=hh:mm:ss

3、spring数据源配置,封装原来的数据源即可

<bean name="dataSourceDBCP" class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver" />
		<property name="url" value="${jdbc.url}" />
		<property name="username" value="${jdbc.username}" />
		<property name="password" value="${jdbc.password}" />
</bean>
<bean id="dataSource" class="com.p6spy.engine.spy.P6DataSource">
	<constructor-arg ref="dataSourceDBCP"></constructor-arg>
</bean>

4、重写P6LogFactory,目的是为了过滤resultset,一定要使用重写的P6LogFactory,否则将会输出大量重复的sql语句

package com.spy.test;

import java.sql.ResultSet;
import java.sql.SQLException;

import com.p6spy.engine.spy.P6Statement;

public class P6LogFactory extends com.p6spy.engine.logging.P6LogFactory{

	@Override
	public ResultSet getResultSet(ResultSet real, P6Statement statement,String preparedQuery, String query) throws SQLException {
		return real;
	}

}

5、调试sql输出结果集

04:14:23|16|0|statement|select count(1) 
	from t_trading a 
	 
	where a.customerId=?|select count(1) 
	from t_trading a 
	 
	where a.customerId='151'



© 著作权归作者所有

共有 人打赏支持
下一篇: mysql常用
开源中国首席观察员
粉丝 5
博文 24
码字总数 11513
作品 0
顺德
高级程序员
私信 提问
加载中

评论(1)

tanliwei
tanliwei
maven
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
<version>1.3</version>
</dependency>
监控和剖析数据库操作-P6Spy、SQL Profiler、IronTrack SQL 使用简介

在我们 Java 开发应用程序的过程中,难免会碰到系统的性能问题,特别在企业应用的开发过程中,都会与数据库进行打交道。当我们碰到数据库性能时,最有效的就是直接跟踪每一个 SQL 语句的执行...

jiyayun
2012/11/05
0
0
【hibernate系列】采用p6spy+SQLProfiler完整显示hibernate的S...

虽然在hibernate中有show_sql选项,但是显示出来的语句大多类似 select * from xxx where value=? 但是有时候我们需要得到完整的SQL语句,怎么办呢?使用P6SPY就可以完成这个任务 p6spy是一个...

磊神Ray
2011/12/21
0
0
SQL Profiler 无法连接 P6SPY 问题

虽然我按照步骤如下安装了SQLProfiler,但在启动SQLProfiler再启动服务后仍然显示Not connected to P6SPY。 使用步骤 首先,你的应用系统同样也应当是基于数据库的,然后你需要去获取 SQL Pr...

jiyayun
2012/11/07
0
0
让Hibernate输出SQL语句参数配置

在J2ee应用中,如果采用Hibernate框架,可以自动建立数据库实体与Java实体类的映射关系,大大方便Java程序进行持久化对象访问和操作,从而明显提高企业应用开发效率,减轻Java程序与后台数据...

java-苦苦甜甜
2013/06/04
0
0
关于得到PrepareStatement中的SQL

昨天刚完成现有将DB Query集成到我们的perflog的功能,粒度细化到每一次executeQuery,Tim琢磨着能不能把sql也留在我们的perflog中,他指了几条路,我来研究这部分。记录下研究的结果。 1,Ja...

小紅
2013/06/19
0
3

没有更多内容

加载失败,请刷新页面

加载更多

纹理与表面细节添加方法---凹凸映射

中国龙-扬科
2分钟前
0
0
20181115上课截图

小丑鱼00
10分钟前
0
0
初识css自定义属性

这算是一篇两篇文章译文的糅合体,旨在帮助理解css自定义属性。 今天,CSS预处理器是Web开发的标准。 预处理器的一个主要优点是它们使您能够使用变量, 这有助于您避免复制和粘贴代码,并简化...

嫣然丫丫丫
19分钟前
0
0
JAVA基础--session共享的前生今世

session共享的前生今世 Session及cookie基本概念及生命周期 session   当浏览器发起一个新的HTTP请求时,WEB服务端会主动创建一个session.并分配一个sessionID作为服务端识别客户端的一个标...

spinachgit
28分钟前
0
0
Deepin Linux 下把 UC 缓存视频变为 MP4 文件

本文是利用 FFMPEG 的功能实现的。 生成 file.txt文件 因为缓存文件都是数字,且文件夹内还有其他文件,包括 index.* 的文件。 $ ls -1v --hide=file.txt --hide=index* > file.txt 解释 ls...

不避风云
29分钟前
0
2

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部