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异常