问题?

使用Hibernate提供的show_sql内置属性true只能输出类似于下面的SQL语句:
Hibernate:   
insert into user(name,password) values (?, ?)

这样不利于程序的调试,怎么可以显示具体参数的值?

解决方法:

一、使用第三方jar包p6spy:

下面介绍一下p6spy的使用步骤:
1 http://pan.baidu.com/s/1ksn7G 下载p6spy包。
2 解压出p6spy.jar 和spy.properties两个文件
3 pp6spy.jar 放入应用程序的WEB-INF/lib目录,将spy.properties放入src目录下
4 修改spy.properties的realdriver = com.mysql.jdbc.Driver
5 修改hibernate.cfg.xml,修改connection.driver_class的值为com.p6spy.engine.spy.P6SpyDriver

<property name="connection.driver_class">
	com.p6spy.engine.spy.P6SpyDriver
</property>

6.修改spy.properties文件里的deregisterdrivers=false改为deregisterdrivers=true

spy.properties介绍
1.excludecategories这个是定义你不喜欢的输出信息,也就是说他的值将不会被输出到log或打印在控制台.值有: error, info, batch, debug, statement,commit, rollback, result, resultset.这里的resultset是请通过修改源码,官方是不支持屏蔽到这个属性的.
2.appender,这个是定义你的输出指向,是输出到log4j,还是控制台,还是文件.
3.logfile,这个属性是定义你的log日志文件的存放位置.自己任意即可,如果你没选择输出到配置文件,其值默认即可.
4.append,这个属性是定义当你指定输出到文件的时候,是每次都追加到文件末尾还是每次覆盖,一般的都是追加吧 true即可.

配置这些之后打印出来的sql的参数就可以看到具体的值了,不过使用p6spy生成的语句没有格式化,不方便阅读。所有可以使用第二种方法。

二、使用log4j显示hibernate sql语句的值

log4j.properties的配置

log4j.logger.org.hibernate.type属性的值为debug或者trace

log4j.rootLogger=INFO,stdout
# Log everything. Good for troubleshooting
log4j.logger.org.hibernate=INFO
# Log all JDBC parameters
log4j.logger.org.hibernate.type=ALL

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %5p %c{1}:%L - %m%n

 运行结果:可以显示具体的参数信息

Hibernate: insert into user (password, username) values (?, ?)
2013-12-17 23:43:04,236 TRACE StringType:151 - binding '参数1内容' to parameter: 1
2013-12-17 23:43:04,236 TRACE StringType:151 - binding '参数2内容' to parameter: 2

源码

  

控制台打印Hibernate的SQL语句显示绑定参数值的更多相关文章

  1. 【转】 mybatis如何在控制台打印执行的sql语句

    <strong>######################################################################### #Root Logger ...

  2. mybatis 控制台打印执行的SQL语句

    1. Spring boot 集成 mybatis [转载]SpringBoot中Mybatis打印sql 1.1 如果使用的是application.properties文件,加入如下配置: log ...

  3. mybatis如何在控制台打印执行的sql语句

    log4j.rootLogger=DEBUG, Console #Console log4j.appender.Console=org.apache.log4j.ConsoleAppender log ...

  4. Spring Boot 整合MaBatis如何在控制台打印执行的SQL语句

    yml文件:logging: level: com.XXX.Mapper: debug (红色部分为Dao层的包名,注意不是XML文件的包名) properties文件: logging.level. ...

  5. mybatis控制台打印执行的sql语句

  6. MyBatis7:MyBatis插件及示例----打印每条SQL语句及其执行时间

    Plugins 摘一段来自MyBatis官方文档的文字. MyBatis允许你在某一点拦截已映射语句执行的调用.默认情况下,MyBatis允许使用插件来拦截方法调用 Executor(update.q ...

  7. MyBatis插件及示例----打印每条SQL语句及其执行时间

    Plugins 摘一段来自MyBatis官方文档的文字. MyBatis允许你在某一点拦截已映射语句执行的调用.默认情况下,MyBatis允许使用插件来拦截方法调用 Executor(update.q ...

  8. .NET Core实用技巧(一)如何将EF Core生成的SQL语句显示在控制台中

    目录 .NET Core实用技巧(一)如何将EF Core生成的SQL语句显示在控制台中 前言 笔者最近在开发和维护一个.NET Core项目,其中使用几个非常有意思的.NET Core相关的扩展,在 ...

  9. 在hibernate中用sql语句

    在hibernate中用sql语句,语句是createSQLquery 查出来的是,一列或者多列的数据,要将其转化为对象,有两种方式, 对于已经被hibernate所管理的实体类,在后面加.adden ...

随机推荐

  1. SVM(支持向量机)(二)—Lagrange Duality(拉格朗日对偶问题)

    (整理自AndrewNG的课件,转载请注明.整理者:华科小涛@http://www.cnblogs.com/hust-ghtao/) SVM有点让人头疼,但还是要弄明白.把这一大块搞懂了,会很有成就感 ...

  2. adb 命令使用的时候出现Error

    在使用adb 命令行的时候会出现Error 重启adb server 即可,使用管理员运行Cmd 命令窗口 adb kill-server adb start-server 如果是连接真机查看的时候再 ...

  3. 怎样写Makefile文件(C语言部分)

    本文摘抄自"跟我一起写Makefile ",只是原文中我自己感觉比较精要的一部分,并且只针对C语言,使用GCC编译器. 原文请看这里:http://wiki.ubuntu.org. ...

  4. hdu5086——Revenge of Segment Tree

    Revenge of Segment Tree Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/ ...

  5. ADS1.2安装

    一.ADS1.2的安装 1. 解压 2. 双击打开ads1.2 3.我们选择当中的SETUP.EXE文件,进行安装 4.点击Next: 5.这是许可文件,假设允许的话选择Yes: 6.选择安装文件夹, ...

  6. 微凉大大,教你一步一步在linux中正确的安装Xcache加速php。

    首先,强烈吐槽,百度上的教程,都左复制右复制的,乱七八糟,缺东缺西的.借此微凉大大我提供我苦心整理好的教程.以便各位小菜能顺利的使用Xcache加速php,假设看完了,也操作了,还是失败了的话,请联系 ...

  7. CImageList使用简要说明

    CImageList ImageList;//创建一个包含3个24位色32x32图片的ImageList,ILC_MASK的意思是同时创建一个mask,这样在下面指定了背景颜色以后ImageList就 ...

  8. 网络数据(socket)传输总结

    环境限定:TCP/IP下的socket网络传输:C/C++开发语言,32/64位机. 目前有两种方式对数据进行传输:1)字符流形式,即将数据用字符串表示:2)结构型方式,即将数据按类型直接传输. 1) ...

  9. 为HttpStatusCodeResult加入customErrors

    asp.net mvc的action返回值为HttpStatusCodeResult时的customErrors总是不起作用 (404和exception时的500,因为他们并不是HttpStatus ...

  10. OpenCV五学习: 如何使用命令来启动或关闭OpenCV的CPU指令系统CV_SSE2,CV_SSSE4和其他优化

    在这个博客.我想分享一下OpenCV源代码CPU指令系统CV_SSE2和其他相关知识 一个.    CV_SSE系列指令集的预编译符号定义在opencv2/core/internal.hpp这个头文件 ...