hibernate 显示完整的SQL

本文介绍了一种在使用SQL进行insert操作时遇到的问题及解决方案。当使用带有问号占位符的SQL语句时,即使开启了show_sql=true,也无法查看到完整的SQL语句,这给调试带来了困难。文章提供了一个解决方案——使用P6Spy来解决这一问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当我们使用sql的时候,进行insert 操作如果参数是带?的时候,尽管你配置了show_sql=true,但是也不能正常显示一个完整的SQL,这样调试很麻烦

如:insert into order (sn)values(?);

我们希望我们调试的时候显示:insert into order (sn)values('1111');

使用P6Spy  可以解决

文章链接http://www.mkyong.com/hibernate/how-to-display-hibernate-sql-parameter-values-solution/

### 配置 Hibernate 打印完整 SQL 语句 为了使 Hibernate 能够打印完整SQL 语句,包括参数值而不是仅显示占位符,可以通过多种方式实现这一目标。 #### 方法一:通过 `application.yml` 或者 `application.properties` 对于 Spring Boot 应用程序,在配置文件中设置如下属性: ```yaml spring: jpa: properties: hibernate: format_sql: true # 格式化SQL语句以便于阅读[^1] show_sql: true # 控制台是否打印SQL语句 use_sql_comments: true # 显示操作注释 logging: level: org.hibernate.SQL: DEBUG # 启用SQL日志记录 org.hibernate.type.descriptor.sql: TRACE # 记录绑定参数的日志级别为TRACE[^2] ``` 上述配置不仅启用了 SQL显示功能,还设置了合适的日志级别来捕获实际传递给数据库的参数值。这使得最终输出到控制台上的 SQL 更加直观易读,并可以直接用于测试环境中的查询验证。 #### 方法二:通过 XML 文件配置 如果项目不是基于 Spring Boot,则可以在项目的 `hibernate.cfg.xml` 中定义相应的属性: ```xml <hibernate-configuration> <session-factory> <!-- 开启SQL语句显示 --> <property name="show_sql">true</property> <!-- 使用Log4J或其他日志框架追踪SQL执行细节 --> <property name="use_sql_comments">true</property> </session-factory> </hibernate-configuration> ``` 同时还需要调整 Log4J 或其他使用的日志库配置,确保能够捕捉到来自 Hibernate 的调试信息以及参数绑定详情。例如,在 Log4J 配置中加入下面两行: ```properties log4j.logger.org.hibernate.SQL=DEBUG log4j.logger.org.hibernate.type.descriptor.sql.BasicBinder=TRACE ``` 这种方法同样能帮助开发者获取带有具体参数值而非问号占位符的完整 SQL 文本。 #### 方法三:借助第三方工具或插件 除了修改应用程序本身的配置外,还可以考虑利用一些专门设计用来增强开发体验的小型工具或IDE 插件。这些工具有助于更方便地查看和分析由 Hibernate 发送至数据库的实际命令流。不过需要注意的是,这类解决方案通常依赖具体的 IDE 支持情况而定[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值