控制台打印Hibernate的SQL语句显示绑定参数值
问题?
使用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
配置这些之后打印出来的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语句显示绑定参数值的更多相关文章
- 【转】 mybatis如何在控制台打印执行的sql语句
<strong>######################################################################### #Root Logger ...
- mybatis 控制台打印执行的SQL语句
1. Spring boot 集成 mybatis [转载]SpringBoot中Mybatis打印sql 1.1 如果使用的是application.properties文件,加入如下配置: log ...
- mybatis如何在控制台打印执行的sql语句
log4j.rootLogger=DEBUG, Console #Console log4j.appender.Console=org.apache.log4j.ConsoleAppender log ...
- Spring Boot 整合MaBatis如何在控制台打印执行的SQL语句
yml文件:logging: level: com.XXX.Mapper: debug (红色部分为Dao层的包名,注意不是XML文件的包名) properties文件: logging.level. ...
- mybatis控制台打印执行的sql语句
- MyBatis7:MyBatis插件及示例----打印每条SQL语句及其执行时间
Plugins 摘一段来自MyBatis官方文档的文字. MyBatis允许你在某一点拦截已映射语句执行的调用.默认情况下,MyBatis允许使用插件来拦截方法调用 Executor(update.q ...
- MyBatis插件及示例----打印每条SQL语句及其执行时间
Plugins 摘一段来自MyBatis官方文档的文字. MyBatis允许你在某一点拦截已映射语句执行的调用.默认情况下,MyBatis允许使用插件来拦截方法调用 Executor(update.q ...
- .NET Core实用技巧(一)如何将EF Core生成的SQL语句显示在控制台中
目录 .NET Core实用技巧(一)如何将EF Core生成的SQL语句显示在控制台中 前言 笔者最近在开发和维护一个.NET Core项目,其中使用几个非常有意思的.NET Core相关的扩展,在 ...
- 在hibernate中用sql语句
在hibernate中用sql语句,语句是createSQLquery 查出来的是,一列或者多列的数据,要将其转化为对象,有两种方式, 对于已经被hibernate所管理的实体类,在后面加.adden ...
随机推荐
- 关于在打包Jar文件时遇到的资源路径问题(二)
在关于<关于在打包Jar文件时遇到的资源路径问题(一)>中,以及描述了当资源与可执行JAr分离时的资源路径代码的编写问题,后来想了想,为什么将<Java核心技术卷一>中的程序1 ...
- 解决Ajax.BeginForm还是刷新页面的问题
在.net mvc中用Ajax.BeginForm来实现异步提交,在Ajax.BeginForm里面还是可以用submit按钮,一般来说 submit按钮是提交整个页面的数据.但是在Ajax.Begi ...
- 研究一下TForm.WMPaint过程(也得研究WM_ERASEBKGND)——TForm虽然继承自TWinControl,但是自行模仿了TCustomControl的全部行为,一共三种自绘的覆盖方法,比TCustomControl还多一种
先擦除背景: procedure TCustomForm.WMEraseBkgnd(var Message: TWMEraseBkgnd); begin if not IsIconic(Handle) ...
- Java使用HttpURLConnection上传文件
从普通Web页面上传文件非常easy.仅仅须要在form标签叫上enctype="multipart/form-data"就可以,剩余工作便都交给浏览器去完毕数据收集并发送Http ...
- VI01增强问题
函数'SD_SCD_ITEM_PRICING_DATA_GET',其实在增强中和交货相关的数据在这个函数中都可以取到,没有必要再从LIKP.LIPS等等中重新取数. include程序RV64A631 ...
- HTML5动态分页效果代码
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- [Java 8] (6) Lambda与资源管理
资源处理 Java本身自带了垃圾回收(Garbage Collection)功能.可是仅仅有垃圾回收的目标是内部资源(Internal Resource),典型的比方堆上分配的内存区域等.对于外部资源 ...
- 排列-条件求和(Code)
static void Main(string[] args) { // Generate data int arraySize; int[] data; Random rnd; arraySize ...
- 如何配置web服务器
如何配置web服务器 (1)了解DNS主机名和IP地址.如果此WEB服务器在Internet上,需向ISP申请和注册此服务器的DNS主机名和IP地址.如果此服务器只在企业网内使用,则在内部的DNS服务 ...
- THashMD5,THashSHA1,THashBobJenkins,TIdHashMessageDigest5的用法
[delphi] view plain copy unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils ...