Hibernate在控制台打印sql语句以及参数
2018-03-06 17:24
741 查看
最近在工作中使用hibernate,遇到了sql语句错误,为了查看具体的错误,整理了hibernate在控制台及日志打印sql语句及参数的方法
在网上查这个问题查了好久,基本上都是xml配置,在此不多说;
正确的properties配置项应该如下图所示:
在jpa下一级不直接是hibernate,而是properties。spring.jpa.properties.hibernate.show_sql=true //控制台是否打印
spring.jpa.properties.hibernate.format_sql=true //格式化sql语句
spring.jpa.properties.hibernate.use_sql_comments=true //指出是什么操作生成了该语句此时,在控制台看到的现象:Hibernate:
可以看到,控制台打印了一条经过格式化之后的sql语句,并标明了这条语句是在Hibernate插入TaskWebSiteRev这个对象到数据库的时候生成的。
打印sql语句中的参数值
经过上面的步骤,我们已经可以在控制台打印出格式化之后的sql语句,但是大多数情况下,我们还需要具体的sql参数值,这个时候我们就需要配置 日志配置文件。
博主使用的是slf4j的日志,配置文件用的是logback.xml,配置方式如下:<logger name="org.hibernate.SQL" level="DEBUG"/>
<logger name="org.hibernate.engine.QueryParameters" level="DEBUG"/>
<logger name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG"/>直接把这三个配置丢到xml的根节点下就可以~来看一下效果:
可以看到控制台依次输出了sql参数,并且将这些参数在数据库中的类型也一并输出了。
打印sql语句到日志
在上述步骤的基础上,在logback.xml中增加两项配置:<logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE"/>
<logger name="org.hibernate.type.descriptor.sql.BasicExtractor" level="TRACE"/>这样就会在日志中将sql语句打印出来,在无法查看控制台的情况下,就可以使用这个方法啦。效果如图所示:
注:
以上提到的配置如果全部配置,在控制台会有冗余的打印信息:
建议根据需要,只配置打印到控制台或打印到日志其中一种。
以上就是hibernate在控制台输出sql语句及其参数值的方法,有不对的地方请指正,也欢迎大家分享自己知道的更方便的方法~
环境说明
IntelliJ IDEA 2017.3.4 版本;SpringBoot 2.0.0.RELEASE;hibernate用的是JPA自带。打印sql语句到控制台
首先,我使用的是application.properties配置文件,使用yml也可以达到同样的效果。在网上查这个问题查了好久,基本上都是xml配置,在此不多说;
正确的properties配置项应该如下图所示:
在jpa下一级不直接是hibernate,而是properties。spring.jpa.properties.hibernate.show_sql=true //控制台是否打印
spring.jpa.properties.hibernate.format_sql=true //格式化sql语句
spring.jpa.properties.hibernate.use_sql_comments=true //指出是什么操作生成了该语句此时,在控制台看到的现象:Hibernate:
可以看到,控制台打印了一条经过格式化之后的sql语句,并标明了这条语句是在Hibernate插入TaskWebSiteRev这个对象到数据库的时候生成的。
打印sql语句中的参数值
经过上面的步骤,我们已经可以在控制台打印出格式化之后的sql语句,但是大多数情况下,我们还需要具体的sql参数值,这个时候我们就需要配置 日志配置文件。
博主使用的是slf4j的日志,配置文件用的是logback.xml,配置方式如下:<logger name="org.hibernate.SQL" level="DEBUG"/>
<logger name="org.hibernate.engine.QueryParameters" level="DEBUG"/>
<logger name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG"/>直接把这三个配置丢到xml的根节点下就可以~来看一下效果:
可以看到控制台依次输出了sql参数,并且将这些参数在数据库中的类型也一并输出了。
打印sql语句到日志
在上述步骤的基础上,在logback.xml中增加两项配置:<logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE"/>
<logger name="org.hibernate.type.descriptor.sql.BasicExtractor" level="TRACE"/>这样就会在日志中将sql语句打印出来,在无法查看控制台的情况下,就可以使用这个方法啦。效果如图所示:
注:
以上提到的配置如果全部配置,在控制台会有冗余的打印信息:
建议根据需要,只配置打印到控制台或打印到日志其中一种。
以上就是hibernate在控制台输出sql语句及其参数值的方法,有不对的地方请指正,也欢迎大家分享自己知道的更方便的方法~
相关文章推荐
- 问题:Hibernate ,测试类中并没有在控制台打印出sql语句?
- hibernate 打印SQL语句到控制台
- 最近在做hibernate开发时,控制台打印出了sql语句,但数据库没记录
- spring+hibernate 插入数据时控制台打印出sql语句,但是数据库中并没有数据解决方法
- log4j配置使控制台能打印出hibernate生成sql的参数
- 控制台打印Hibernate的SQL语句显示绑定参数值
- log4j的使用以及mybatis在控制台打印sql语句
- 让控制台打印的Hibernate显示SQL语句显示绑定参数值
- 控制台打印Hibernate的SQL语句显示绑定参数值
- Hibernate配置打印sql语句和参数
- SSH中设置Hibernate执行的SQL 语句打印控制台
- 让Hibernate输出SQL语句参数配置
- hibernate 打印sql和参数的配置
- hibernate save() 不能保存实体(能打印sql语句)
- MyBatis整合spring、spring MVC实现简单登陆,并在控制台添加sql语句打印
- hibernate出现打印SQL语句读取不到值的情况的解决
- log4j 在控制台打印 mybatis 的 sql 语句的配置
- hibernateTemplate.save() 不能保存实体(能打印sql语句)
- 怎样在控制台或者日志打印输出JDBC执行的sql语句
- 配置mybatis和ibatis控制台打印sql语句