Spring Boot显示sql参数绑定?

Posted

技术标签:

【中文标题】Spring Boot显示sql参数绑定?【英文标题】:Spring boot show sql parameter binding? 【发布时间】:2015-09-02 14:23:15 【问题描述】:

我是弹簧靴的新手。 sql参数绑定的配置设置是什么。例如,在以下行中,我应该能够看到所有“?”的值。

SELECT * FROM MyFeed WHERE feedId > ? AND isHidden = false ORDER BY feedId DESC LIMIT ?

目前我的配置为

spring.jpa.show-sql: 真

【问题讨论】:

这能回答你的问题吗? How to print a query string with parameter values when using Hibernate 【参考方案1】:

在应用程序 yml 中添加以下属性。

logging:
  level:
    org:
      hibernate:
        type: trace

添加以下内容以在控制台中打印格式化的 SQL

spring:
  jpa:
    show-sql: true
    properties:
      hibernate:
        format_sql: true

假设您通过 id 查找学生记录,您将能够看到绑定参数如下

休眠:从学生 student0_ 中选择 student0_.id 作为 id8_5_0_ student0_.id=?

2020-07-30 12:20:44.005 跟踪 1328 --- [nio-8083-exec-8] o.h.type.descriptor.sql.BasicBinder :绑定参数 [1] 为 [大整数] - [1]

【讨论】:

【参考方案2】:

将这些添加到属性文件中

#to show sql
spring.jpa.properties.hibernate.show_sql=true
#formatting
spring.jpa.properties.hibernate.format_sql=true
#printing parameter values in order
logging.level.org.hibernate.type.descriptor.sql=trace

【讨论】:

【参考方案3】:

对于 Eclipse 链接,在 appilication.properties 中添加这些行

jpa.eclipselink.showsql=true
jpa.eclipselink.logging-level=FINE

【讨论】:

【参考方案4】:

将这些添加到application.properties,您应该会看到详细的日志。

logging.level.org.hibernate.SQL=debug
logging.level.org.hibernate.type.descriptor.sql=trace

【讨论】:

【参考方案5】:

这只是对底层持久性提供者的提示,例如Hibernate、EclipseLink 等。不知道你在用什么很难说。

对于 Hibernate,您可以配置日志记录以同时输出绑定参数:

http://www.mkyong.com/hibernate/how-to-display-hibernate-sql-parameter-values-log4j/

这会给你这样的输出:

Hibernate: INSERT INTO transaction (A, B) 
VALUES (?, ?)
13:33:07,253 DEBUG FloatType:133 - binding '10.0' to parameter: 1
13:33:07,253 DEBUG FloatType:133 - binding '1.1' to parameter: 2

应该适用于所有 JPA 提供程序的替代解决方案是使用类似 log4jdbc 的东西,它可以为您提供更好的输出:

INSERT INTO transaction (A, B) values (10.0, 1.1);

见:

https://code.google.com/p/log4jdbc-log4j2/

【讨论】:

感谢@Alan 的回答。我喜欢您建议的替代解决方案。我还没有时间检查:)。如果问题仍然存在,我会回复您。

以上是关于Spring Boot显示sql参数绑定?的主要内容,如果未能解决你的问题,请参考以下文章

未绑定命名参数:Spring Boot 中的 DATE_FORMAT 本机查询

Spring JDBC 框架中, 绑定 SQL 参数的另一种选择:具名参数(named parameter)

Spring BootSpring Boot之自定义配置参数绑定到Java Bean

spring boot 提交参数绑定List下标越界,超过256,java.lang.IndexOutOfBoundsException异常

如何从环境变量绑定数据源属性 Spring boot

Hibernate实战源码解析Hibernate参数绑定及PreparedStatement防SQL注入原理