使用p6spy让hibernate打印真正的sql 去掉结果集resultset版.
由于公司项目架构使用hibernate,在调试程序的时候hibernate打印的sql都是带占位符的,不是最原始的sql语句,这对我们开发人员来说是很痛苦的一件事情.经过一番波折在网上找到了这么一个jar包,它的原理是:拦截最底层的jdbc连接,监控所有jdbc操作,所以说会影响性能,建议使用的童鞋在项目发布的时候最好把他替换回来.
jar包下载地址:http://download.csdn.net/detail/qq413041153/4177575
1.如果你的datasource配置在hibernate或者spring的配置文件中,那么你需要将jar包放到编译路径下;如果你使用的是jndi之类的在tomcat配置文件里配置的数据源,那么就需要将jar放到tomcat的lib里面.提醒一句 :如果你这里是tomcar的jndi配置的话,需要删除tomcat工作目录项目内容,重新编译.
2.将数据源的classname替换成com.p6spy.engine.spy.P6SpyDriver,这个类会拦截你的数据库连接.
3.将spy.properties配置文件放到src根目录.(这里的src是指的你源码编译的初始根目录, 一般不改动的话就是src,有的项目如果需要多语版版本的可能是src/java是java源码src/c是别的源码,这时候你就要放到src/java下面).
5.找到excludecategories这个是定义你不喜欢的输出信息,也就是说他的值将不会被输出到log或打印在控制台.可的值有: error, info, batch, debug, statement,commit, rollback, result, resultset.这里的resultset是请过修改源码后加上的官方是不支持屏蔽到这个属性的.
7.找到logfile,这个属性是定义你的log日志文件的存放位置.自己任意即可,如果你没选择输出到配置文件,其值默认即可.
最后说一下,p6spy官方现在已经找不到了,很旧没更新了,在文档里说是支持log4j的但是我调试了很久,
没能成功.不过我觉得这个功能可有可无,因为这个p6spy是有点耗费性能的 也就我们开发的时候用用,一般选
择输出到控制台就over了.Ok that's all.
- 使用p6spy让hibernate打印真正的sql 去掉结果集resultset版.
- 使用p6spy打印hibernate或者PreparedStatement的带参数值的sql语句
- [置顶] 【p6spy】程序员开发利器P6spy——打印执行sql语句,mybatis、ibatis、Hibernate均可使用
- Hibernate使用SQL查询结果总个数
- 使用p6spy 2监控及打印Spring 4 JdbcTemplate生成的SQL语句
- Hibernate查询,返回new对象(注意这个新定义的类要有构造函数),使用sql带条件分页查询并且把结果显示到一个对象的集里面的解决方案
- 数据库之SQL SERVER中使用函数去掉结果数据中的空格
- Spring4.0.2使用p6spy打印mybatis执行SQL
- 使用 P6Spy 来格式化 SQL 语句,支持 Hibernate 和 iBATIS
- hibernate中使用sql返回结果转为非持久化对象
- mybatis下使用log4j打印sql语句和执行结果
- 使用p6spy 打印 oracle,mysql 等数据库完整带参数 sql
- Hibernate 自定义查询sql 并使用自定义对象接收查询结果
- 【Hibernate】关于hibernate中使用createSQLQuery后返回的结果处理
- 使用P6Spy打印sql语句方便进行调试
- Hibernate之使用sql语句查询多个表,返回多种字段,将返回结果映射到自定义的普通pojo类中
- mybatis下使用log4j打印sql语句和执行结果
- hibernate中使用sql返回结果转为非持久化对象
- 使用 P6Spy 来格式化 SQL 语句,支持 Hibernate 和 iBATIS
- Hibernate中使用sql查询结果后再封装成实体类的问题