Spring启动显示sql参数绑定?

时间:2015-06-17 11:20:27

标签: jpa spring-boot spring-data

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

的值

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

目前我的配置为

spring.jpa.show-sql:true

5 个答案:

答案 0 :(得分:8)

这只是对底层持久性提供程序的提示,例如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/

答案 1 :(得分:8)

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

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

答案 2 :(得分:7)

将它们添加到属性文件中

#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 :(得分:2)

在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]设置为 [BIGINT]-[1]

答案 4 :(得分:0)

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

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