mybatis -- 打印完整sql(带参数)

本文介绍了如何通过MyBatis拦截器来打印出完整的执行SQL,包括预编译参数,使得在开发环境中调试更加方便。文章提到了使用Hutool工具包,并规定了动态SQL中参数的命名规则,以及在什么环境下该功能生效。同时提供了项目的Git地址供读者克隆学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

在平常使用mybatis时, 即使开启了日志打印, 打印出来的sql也是预编译语句和参数两行
在这里插入图片描述
我们要去数据库中去执行sql的时候, 还需要自己去将参数拼接进去,
现在我们可以通过拦截器来实现打印完整的sql,结果如下

HanSql : select a.id, a.title, a.opera_time as operaTime, c.id as comment_id, c.context as comment_context, c.blog_id as comment_blogId from blog a left join comment c on a.id = c.blog_id WHERE title like concat('%', 'csdn' ,'%')  and a.id in (  1  ,  2  ) and c.id in (  1  ,  2  ,  3  )  and opera_time like concat('%', '2022-05-28' ,'%')   and opera_time like concat('%', '2022-05-28 00:00:00' ,'%')   and opera_time like concat('%', '2022-05-28 00:00:00' ,'%')

前置要求

为了节约代码量, 降低代码的复杂程度,需要遵守一下要求

  • 引入hutool工具包
        <!--hutool工具类-->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.3.4</version>
        </dependency>

  • 动态sql , foreach中的#{}中的值必须是传入对象 + “Item”, 如下:
    @Param(“list”) List list —>
<foreach collection="list" index="index" open="(" close=")" separator="," item="listItem">
     #{listItem}
</foreach>
  • spring.profiles.active = dev, 也就是开发环境才起作用
  • yyyy-MM-dd格式的日期用LocalDate.java 接收
  • yyyy-MM-dd HH:mm:ss格式的日期用LocalDateTime.java 接收

项目路径

在这里插入图片描述

git地址

https://gitee.com/hctrl/mybatis-project.git

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值