在Java Project项目中使用p6spy的作用
来源:互联网 发布:淘宝卖家怎么发货 编辑:程序博客网 时间:2024/05/16 14:42
这次项目中的一个bug用p6spy的SQL跟踪功能给找了出来,觉得这玩意儿特定环境下还挺好用,特转发一份其使用方法:
来源:http://it.100xuexi.com/view/otdetail/20120727/fc1fe55e-7b06-4292-8e2f-1ab0fe8bcbf7.html
使用Hibernate提供的内置属性<Property name="show_sql">true</Property>只能输出类似于下面的SQL语句:
1. Hibernate:
2.
3. insert into student(name, sex, age, cardId, classroom_id, id) values (?, ?, ?, ?, ?, ?)
这样不利于程序的调试,为了可以显示?占位符所代表的具体数据,需要第三方Jar包,p6spy是一个该需求的开源实现。
一、在Java Project项目中使用p6spy:
- 到其官方网站下载其Jar包,http://www.p6spy.com/(貌似不能访问了)靠Google或Baidu搜索一下吧。
- 一般Download下来的是zip或jar文件包,将其解压缩,将里面的p6spy.jar放入构建路径里,将spy.properties文件放入src目 录下。
- 修改两个属性,第一个,realdriver=你使用具体数据库的驱动类(例如MySQL为:com.mysql.jdbc.Driver);第二个,logfile=指定log文件的位置(例如,c:/spy.log)。
- 修改Hibernate.cfg.xml配置文件中的 <property name="hibernate.connection.driver_class">com.p6spy.engine.spy.P6SpyDriver</property>
配置完毕后,执行HQL语句后,查看spy.log文件就可以看到?占位符的具体数据了:(前面部分是Hibernate的初始化信息,最下面显示的就是完整的SQL语句)
1. 1326730516837|-1||debug||com.p6spy.engine.common.P6SpyOptions reloading properties
2. 1326730516842|-1||info||Using properties file: D:\WorkSpace\MyEclipse\9\hibernate\list mapping\bin\spy.properties
3. 1326730516842|-1||info||No value in environment for: getStackTrace, using: false
4. 1326730516842|-1||info||No value in environment for: getAppender, using: com.p6spy.engine.logging.appender.FileLogger
5. 1326730516842|-1||info||No value in environment for: getDeregisterDrivers, using: false
6. 1326730516842|-1||info||No value in environment for: getUsePrefix, using: false
7. 1326730516842|-1||info||No value in environment for: getExecutionThreshold, using: 0
8. 1326730516842|-1||info||No value in environment for: getAutoflush, using: true
9. 1326730516842|-1||info||No value in environment for: getExclude, using:
10. 1326730516842|-1||info||No value in environment for: getExcludecategories, using: info,debug,result,batch
11. 1326730516843|-1||info||No value in environment for: getFilter, using: false
12. 1326730516843|-1||info||No value in environment for: getInclude, using:
13. 1326730516843|-1||info||No value in environment for: getIncludecategories, using:
14. 1326730516843|-1||info||No value in environment for: getLogfile, using: spy.log
15. 1326730516843|-1||info||No value in environment for: getRealdriver, using: com.mysql.jdbc.Driver
16. 1326730516843|-1||info||No value in environment for: getRealdriver2, using:
17. 1326730516843|-1||info||No value in environment for: getRealdriver3, using:
18. 1326730516843|-1||info||No value in environment for: getAppend, using: true
19. 1326730516843|-1||info||No value in environment for: getSpydriver, using: com.p6spy.engine.spy.P6SpyDriver
20. 1326730516843|-1||info||No value in environment for: getDateformat, using:
21. 1326730516843|-1||info||No value in environment for: getDateformatter, using: null
22. 1326730516843|-1||info||No value in environment for: getStringmatcher, using: com.p6spy.engine.common.SubstringMatcher
23. 1326730516843|-1||info||No value in environment for: getStringMatcherEngine, using: com.p6spy.engine.common.SubstringMatcher@60e128
24. 1326730516843|-1||info||No value in environment for: getStackTraceClass, using:
25. 1326730516843|-1||info||No value in environment for: getSQLExpression, using: null
26. 1326730516843|-1||info||No value in environment for: getReloadProperties, using: false
27. 1326730516843|-1||info||No value in environment for: getReloadPropertiesInterval, using: 60
28. 1326730516843|-1||info||No value in environment for: getJNDIContextFactory, using: null
29. 1326730516843|-1||info||No value in environment for: getJNDIContextProviderURL, using: null
30. 1326730516844|-1||info||No value in environment for: getJNDIContextCustom, using: null
31. 1326730516844|-1||info||No value in environment for: getRealDataSource, using: null
32. 1326730516844|-1||info||No value in environment for: getRealDataSourceClass, using: null
33. 1326730516844|-1||info||No value in environment for: getRealDataSourceProperties, using: null
34. 1326730517419|7|0|statement|select max(id) from classroom|select max(id) from classroom
35. 1326730517440|0|0|statement|select max(id) from student|select max(id) from student
36. 1326730517454|0|0|statement|insert into classroom (grade, number, id) values (?, ?, ?)|insert into classroom (grade, number, id) values ('fourth grade', 1, 1)
37. 1326730517456|1|0|statement|insert into student (name, sex, age, cardId, classroom_id, id) values (?, ?, ?, ?, ?, ?)|insert into student (name, sex, age, cardId, classroom_id, id) values ('lisi', 'true', 21, '08053120', 1, 2)
38. 1326730517457|0|0|statement|update student setclassroom_id=?, index_=? where id=?|update student setclassroom_id=1,index_=1 whereid=2
39. 1326730517458|0|0|commit||
二、在Java Web项目中使用p6spy(Tomcat环境下)
- 将p6spy.jar 放入应用程序的WEB-INF/lib目录,将spy.properties放入WEB-INF/classes目录
- 其他与Java Project项目使用方法一样。
- 重启Tomcat服务器
可能会出现的问题:驱动程序加载先后的问题解决
如果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,重新运行即可。
- 在Java Project项目中使用p6spy的作用
- 在hibernate中使用P6spy
- 在hibernate中使用P6spy
- java/JavaWeb项目中.settings、 .classpath、.mymetadata、.project文件的作用
- p6spy的简单使用
- J2EE 使用p6spy查看JAVA程序中执行的SQL,TOMCAT配置
- JavaWeb项目中 .classpath、.mymetadata、.project文件的作用
- Web项目中 .classpath、.mymetadata、.project文件的作用详解
- Web项目中 .classpath、.mymetadata、.project文件的作用
- SSH-Web项目中 .classpath、.mymetadata、.project文件的作用
- Web项目中 .classpath、.mymetadata、.project文件的作用
- Web项目中 .classpath、.mymetadata、.project文件的作用
- JavaWeb项目中 .classpath、.mymetadata、.project文件的作用
- Web项目中 .classpath、.mymetadata、.project文件的作用
- p6spy-部署在系统中
- FreeMarker在Java Project的简单使用
- 在IntelliJ IDEA中设置import project(本人导入的是java项目)
- P6SPY的安装和使用
- android 下拉框spinner
- TinyOs开发-----TinyOs 串口通信设置
- MyBatis参数传入集合之foreach动态sql
- 分布式java应用学习笔记二
- s3c2440 驱动 前期 笔记
- 在Java Project项目中使用p6spy的作用
- 对象不支持“split”属性或方法
- jsp+FCKEditor+CKEditor
- 页面上table导成EXCEL
- C# 通过Iphlpapi.dll API操作路由表
- httpWatch 使用介绍
- 关于myeclipse怎么开启XML文件的自动编译
- Android SQL多表检索
- WebService 环境搭建