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

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

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

目前我的配置为

spring.jpa.show-sql: 真

【问题讨论】:

标签: jpa spring-boot spring-data


【解决方案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 的回答。我喜欢您建议的替代解决方案。我还没有时间检查:)。如果问题仍然存在,我会回复您。
          猜你喜欢
          • 2021-01-12
          • 2021-01-11
          • 1970-01-01
          • 2022-09-26
          • 2021-11-08
          • 2016-03-17
          • 2018-02-28
          • 2016-01-13
          • 2019-04-19
          相关资源
          最近更新 更多