JPA打印sql及参数
•
数据库
开启打印sql配置
yml文件中增加如下配置即可在控制台输出sql内容
spring: jpa: show-sql: true
此配置网上很多,不做详细解说
此处附上格式化sql的配置:
spring: jpa: properties: hibernate: format_sql: true
和并后如下
spring: jpa: show-sql: true properties: hibernate: format_sql: true
开启打印sql参数
网上有找了很多资料,有各种配置,但是好时生效,换个项目又失效。
经亲测后总结如下配置:
hibernate 6.0以前(5.x亲测,4.x未测)的配置方式:
logging:
level:
root: info
org.hibernate.type.descriptor.sql.BasicBinder: trace
hibernate 6.0及以后:
logging:
level:
root: info
org.hibernate.orm.jdbc.bind: trace
究其原因,从员代码中即可看出,如下是6.0前后源码的区别:
6.0以前的源码

6.0及其后的源码

区别:
-
包路径有变动:6.0以前是org.hibernate.type.descriptor.sql.BasicBinder,6.0开始变为org.hibernate.type.descriptor.jdbc.BasicBinder
-
6.0以前使用的是org.hibernate.type.descriptor.sql.BasicBinder类的log打印,其log定义如下:
private static final Logger log = CoreLogging.logger( BasicBinder.class );
6.0开始使用的是org.hibernate.type.descriptor.JdbcBindingLogging类打印,该类定义如下:
@SubSystemLogging( name = JdbcBindingLogging.NAME,// org.hibernate.orm.jdbc.bind description = "Logging of JDBC parameter value binding" ) public interface JdbcBindingLogging { String NAME = SubSystemLogging.BASE + ".jdbc.bind"; Logger LOGGER = Logger.getLogger( NAME ); boolean TRACE_ENABLED = LOGGER.isTraceEnabled(); boolean DEBUG_ENABLED = LOGGER.isDebugEnabled(); static void logBinding(int jdbcPosition, int typeCode, Object value) { assert TRACE_ENABLED; LOGGER.tracef( "binding parameter [%s] as [%s] - [%s]", jdbcPosition, JdbcTypeNameMapper.getTypeName( typeCode ), value ); } static void logNullBinding(int jdbcPosition, int typeCode) { assert TRACE_ENABLED; LOGGER.tracef( "binding parameter [%s] as [%s] - [null]", jdbcPosition, JdbcTypeNameMapper.getTypeName( typeCode ) ); } static void logBinding(String callableParameterName, int typeCode, Object value) { assert TRACE_ENABLED; LOGGER.tracef( "binding parameter [%s] as [%s] - [%s]", callableParameterName, JdbcTypeNameMapper.getTypeName( typeCode ), value ); } static void logNullBinding(String callableParameterName, int typeCode) { assert TRACE_ENABLED; LOGGER.tracef( "binding parameter [%s] as [%s] - [null]", callableParameterName, JdbcTypeNameMapper.getTypeName( typeCode ) ); } }
本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/d865082e06.html
