要查看发送到数据库的SQL查询,我们通常使用showSql参数:
showSql
spring.jpa.showSql=true
它使我们可以查看语句主体,但不能查看其参数:
insert into master (id, version, name) values (null, ?, ?)
特别是我们看不到查询结果。
有没有办法在应用程序日志中查看SQL语句,其参数和结果?
使用 log4jdbc-spring-boot-starter, 我们可以轻松地在Spring Boot / Spring Data JPA项目中 记录所有JDBC语句 ,它们的参数和结果。
例如,当我们在应用程序中执行一些JPQL查询时:
select u from User u where u.name = 'john'
然后在应用程序日志中看到以下SQL查询及其参数:
select ... from users users0_ where users0_.name='john'
其结果以表格形式出现:
|---|---------| |id |name | |---|---------| |1 |john | |---|---------|
要使用此启动器,我们必须将其依赖项添加到我们的项目中:
<dependency> <groupId>com.integralblue</groupId> <artifactId>log4jdbc-spring-boot-starter</artifactId> <version>1.0.2</version> </dependency>
并将这些参数添加到application.properties:
application.properties
logging.level.jdbc.resultsettable=info logging.level.jdbc.sqltiming=info logging.level.jdbc.sqlonly=fatal logging.level.jdbc.audit=fatal logging.level.jdbc.resultset=fatal logging.level.jdbc.connection=fatal
此外,我们可以添加以下 log4jdbc 参数以在一行中获取输出:
log4jdbc.dump.sql.addsemicolon=true log4jdbc.dump.sql.maxlinelength=0 log4jdbc.trim.sql.extrablanklines=false