到底怎么查看Hibernate生成SQL中的参数值?
2013-08-28 10:46
274 查看
在网上可能很多人问到到底怎么查看hibernate生成的SQL参数值,可以看到非常多的方法,最多的就是说下载一个P6SPY来查看,其实只要自己看看hibernate的源代码,就可以发现,hibernate所有的参数值的设置都是交由org.hibernate.type.descriptor.ValueBinder接口上的bind方法进行绑定。而在ValueBinder的子类BasicBinder的bind方法上面有一段代码:
这段代码的含义我想所有人都能看得懂吧,如果开启了trace级别的日志,那么就把参数的类型和值输出,所以,最简单,最正确的做法是,在log4j中开启对org.hibernate.type的TRACE(而不是网上很多人说的DEBUG)日志输出级别就可以啦:
控制台输出:
这不所有东西都输出来了么?
if ( LOG.isTraceEnabled() ) { LOG.trace( String.format( BIND_MSG_TEMPLATE, index, JdbcTypeNameMapper.getTypeName( sqlDescriptor.getSqlType() ), getJavaDescriptor().extractLoggableRepresentation( value ) ) ); }
这段代码的含义我想所有人都能看得懂吧,如果开启了trace级别的日志,那么就把参数的类型和值输出,所以,最简单,最正确的做法是,在log4j中开启对org.hibernate.type的TRACE(而不是网上很多人说的DEBUG)日志输出级别就可以啦:
<logger name="org.hibernate.type.descriptor.sql"> <level value="TRACE"></level> <appender-ref ref="console"/> </logger>
控制台输出:
721 [main] DEBUG org.hibernate.SQL - insert into Department (name) values (?) 731 [main] TRACE org.hibernate.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - d1 741 [main] DEBUG org.hibernate.SQL - insert into Department (name) values (?) 741 [main] TRACE org.hibernate.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - d2 751 [main] DEBUG org.hibernate.SQL - insert into Department (name) values (?) 751 [main] TRACE org.hibernate.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - d3 751 [main] DEBUG org.hibernate.SQL - insert into Employee (DEPT_ID) values (?) 761 [main] TRACE org.hibernate.type.descriptor.sql.BasicBinder - binding parameter [1] as [BIGINT] - 2 843 [main] DEBUG org.hibernate.SQL - select department0_.id as id1_0_0_, department0_.name as name2_0_0_ from Department department0_ where department0_.id=? 853 [main] TRACE org.hibernate.type.descriptor.sql.BasicBinder - binding parameter [1] as [BIGINT] - 1
这不所有东西都输出来了么?
相关文章推荐
- hibernate怎么在控制台查看自动生成的建表语句
- 如何查看,当运行一个hibernate 方法后到底执行了哪些SQL语句
- hibernate怎么在控制台查看自动生成的建表语句
- Jboss中使用Log4J输出Hibernate所生成的SQL中的参数值
- 如何解决Hibernate怎么在控制台查看自动生成的建表语句和其他语句?
- hibernate怎么在控制台查看自动生成的建表语句
- mysql生成sql语句 and 查看mysql历史命令 and 查看mysql历史命令 and 解压命令 and 安装WPS and 启动Oracle服务
- java优化Hibernate利用@DynamicInsert和@DynamicUpdate生成动态SQL语句
- Hibernate中文查询生成SQL时会生成乱码解决
- 控制台打印Hibernate的SQL语句显示绑定参数值
- oracle 中--怎么查看当前表空间在作什么操作?--查锁,死锁,当前执行时间长的Sql语句,没提交的事务,对象为哪些进程所用
- Hibernate利用@DynamicInsert和@DynamicUpdate生成动态SQL语句
- Hibernate利用@DynamicInsert和@DynamicUpdate生成动态SQL语句
- 查看Oracle执行计划的几种方法 / oracle中DateTime类型的字段,建立索引后,查寻时索引如何生效?/ oracle 中sql语句怎么加多个强制索引
- Hibernate利用@DynamicInsert和@DynamicUpdate生成动态SQL语句
- [sqlserver脚本]查看指定SQL语句生成了哪些执行计划
- 关于hibernate的sql语句记录到Log4j日志中,并将其中的参数值导入到日志中
- 怎么查看用户的SQL执行历史
- 怎么为ibatis配置日志,查看执行的sql语句
- 如何查看由EF生成的SQL?