Spring启动显示sql参数绑定?

Bhu*_*tel 8 jpa spring-data spring-boot

我是春季靴子的新手.sql参数绑定的配置设置是什么.例如,在以下行中,我应该能够看到所有'?'的值.

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

目前我配置为

spring.jpa.show-sql:true

Ali*_*ahi 40

对于Spring Boot 3,正如它所使用的那样Hibernate 6,上述解决方案不起作用。

尝试:

logging:
  pattern:
  level:
    org.hibernate.orm.jdbc.bind: trace
Run Code Online (Sandbox Code Playgroud)

请参阅: https: //stackoverflow.com/a/74587796/2648077/sf/answers/5240406811/


gre*_*orn 23

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

logging:
  level:
    org:
      hibernate:
        type: trace
Run Code Online (Sandbox Code Playgroud)

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

spring:
  jpa:
    show-sql: true
    properties:
      hibernate:
        format_sql: true
Run Code Online (Sandbox Code Playgroud)

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

Hibernate:从学生student0_中选择student0_.id作为id8_5_0_,其中student0_.id=?

2020-07-30 12:20:44.005 TRACE 1328 --- [nio-8083-exec-8] ohtype.descriptor.sql.BasicBinder :绑定参数 [1] 作为 [BIGINT] - [1]


小智 15

添加这些application.properties,你应该看到详细日志.

logging.level.org.hibernate.SQL=debug
logging.level.org.hibernate.type.descriptor.sql=trace
Run Code Online (Sandbox Code Playgroud)


Ala*_*Hay 9

这只是对底层持久性提供程序的一个提示,例如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
Run Code Online (Sandbox Code Playgroud)

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

INSERT INTO transaction (A, B) values (10.0, 1.1);
Run Code Online (Sandbox Code Playgroud)

看到:

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


San*_*l S 9

将这些添加到属性文件中

#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
Run Code Online (Sandbox Code Playgroud)