Hibernate 打印 sql

对于某些项目而言,我更喜欢使用spring data jpa(底层为hibernate),在开发和测试环境,经常需要看到sql日志,但是spring data jpa的日志打印就有点坑,总得来说就是不太好看,为了看到最终执行的sql, 只好自己动手修改了一把。
示例sql为:

    @Modifying
    @Query("update Article a set a.salesArticleCategoryId=:salesArticleCategoryId where a.tenantId=:tenantId and a.id in :articleList")
    Integer setArticleCategoryId(Long tenantId, Long salesArticleCategoryId, List<Long> articleList);

普通打印

方法一

spring.jpa.show-sql=true

打印结果是:

update article set sales_article_category_id=? where tenant_id=? and (id in (?))

方法二

spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.format_sql=true

打印结果是

Hibernate: 
    update
        article 
    set
        sales_article_category_id=? 
    where
        tenant_id=? 
        and (
            id in (
                ?
            )
        )

打印参数

以上方法均看不到参数,需要打印参数,可以打开:

logging.level.org.hibernate.type.descriptor.sql.BasicBinder=trace

打印结果是

TRACE org.hibernate.type.descriptor.sql.BasicBinder - binding parameter [1] as [BIGINT] - [1048849785215520768]
TRACE org.hibernate.type.descriptor.sql.BasicBinder - binding parameter [2] as [BIGINT] - [474606483645009920]
TRACE org.hibernate.type.descriptor.sql.BasicBinder - binding parameter [3] as [BIGINT] - [1052093050802933760]

增强打印

输出结果如下:

update article set sales_article_category_id=1048849785215520768 where tenant_id=474606483645009920 and (id in (1052093050802933760))

具体配置过程详见:https://blog.lvcc.top/article-detail?articleId=335

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值