使用DataSource-Proxy在Spring Boot中记录SQL语句 - Vlad Mihalcea


在本文中,我将向您展示使用 Spring Boot 时记录 SQL 语句的最佳方式。
记录 SQL 查询非常重要,因为它允许您验证生成语句的数量、自动生成查询的语法,以及证明JDBC 批处理按预期工作
DataSource-Proxy是记录 SQL 语句的最佳方式之一:由于它代理 JDBC DataSource,因此它可以记录您可能与 Spring Boot 一起使用的任何数据访问层技术的语句。即使您混合使用 JPA 和jOOQ,DataSource-Proxy 也会打印所有通过Connection代理的 JDBC 执行的 SQL 语句。
添加依赖:

<dependency>
    <groupId>com.github.gavlyukovskiy</groupId>
    <artifactId>datasource-proxy-spring-boot-starter</artifactId>
    <version>${ds-proxy-spring-boot-starter.version}</version>
</dependency>

当 Spring Boot 启动时,它会创建一个DataSource供 JPA、Hibernate 或其他数据访问技术使用。为了使用 DataSource-Proxy,我们需要允许应用程序使用这个代理替代默认的 JDBCDataSource。
现在 Spring Boot 可以打印由任何数据访问技术生成的有意义的 SQL 语句:
Name:dataSource, Connection:5, Time:1, Success:True
Type:Prepared, Batch:False, QuerySize:1, BatchSize:0
Query:["
    SELECT
       u.id AS id1_7_,
       u.email AS email5_7_,
       u.external_id AS external6_7_,
       u.first_name AS first_na7_7_,
       u.last_name AS last_nam9_7_,
    FROM users u
    WHERE u.email = ?
"]
Params:[(
    john.doe@acme.com
)]

原文点击标题