Spring Boot JPA 打印 SQL 语句及参数

Spring Boot JPA About 1,042 words

需求

JPA执行SQL语句时,打印最终生成的SQL以及传入的参数。

方法一

show-sql设置为true表示打印SQL语句。

format_sql设置为true表示格式化SQL(多行显示)。

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

方法二(推荐)

show-sql: true虽然可以打印SQL日志,但其没有使用Logger日志管理类,而是使用System.out标准输出。

虽然现在基于Kubernetes中的pod部署可以使用ELKLoki等直接收集标准输出,但可以使用logback等日志框架,可以设置MDCtraceId追踪上下调用链路。

JPA

注意:此处org.hibernate.SQL中的SQL不是一个类,必须大写。

logging:
  level:
    org.hibernate.SQL: debug
    org.hibernate.type.descriptor.sql.BasicBinder: trace

JdbcTemplate

logging:
  level:
    org.springframework.jdbc.core.JdbcTemplate: debug
    org.springframework.jdbc.core.StatementCreatorUtils: trace

对应源码

org.hibernate.SQL对应的Logger位于SqlStatementLogger中。

package org.hibernate.engine.jdbc.spi;

public class SqlStatementLogger {
    private static final Logger LOG = CoreLogging.logger( "org.hibernate.SQL" );
    private static final Logger LOG_SLOW = CoreLogging.logger( "org.hibernate.SQL_SLOW" );
}

参考

https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html

Views: 5,437 · Posted: 2023-03-03

————        END        ————

Give me a Star, Thanks:)

https://github.com/fendoudebb/LiteNote

扫描下方二维码关注公众号和小程序↓↓↓

扫描下方二维码关注公众号和小程序↓↓↓


Today On History
Browsing Refresh