在 MyBatis 中实现控制台输出 SQL 参数

完美的输出打印 SQL 及执行时长[MyBatis-Plus系列] 是针对数据库访问操作的动态监测框架(开源项目)它使得数据库数据可无缝截取和操纵,而不必对现有应用程序的代码作任何修改。提供了两种SQL分析打印的方式,用于输出每条SQL语句及其执行时间,针对执行较长时间的SQL可以停止运行,有助于发现问题。在我们日常开发工作当中,避免不了查看当前程序所执行的SQL语句,以及了解它的执行时间,方便分析是否出现了慢SQL问题。,因为这些工具都是有性能损耗的,所以不建议生产环境使用。(1)在pom.xml文件中添加p6spy的依赖。过着爱谁谁的生活,活出不设限的人生。 阅读详情

在 MyBatis 中实现控制台输出 SQL 参数,可通过以下方案实现:

一、使用 MyBatis-Plus 的 SqlLogInterceptor(推荐)

‌适用场景‌: 项目已集成 MyBatis-Plus(3.5.3+版本)
‌配置步骤‌:

‌1、添加拦截器‌:

@Configuration
public class MyBatisPlusConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new SqlLogInterceptor());
        return interceptor;
    }
}

‌2、配置日志输出‌(application.yml):

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

此方案可直接输出完整 SQL(参数替换为真实值)。

二、通过 log4jdbc 工具输出完整 SQL

‌适用场景‌: 需独立查看带参数的 SQL,不依赖 MyBatis-Plus
‌步骤‌:

1‌、添加依赖‌:

<dependency>
    <groupId>org.bgee.log4jdbc-log4j2</groupId>
    <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
    <version>1.16</version>
</dependency>

‌2、修改 JDBC 驱动配置‌:

# 原 JDBC URL 前追加 "jdbc:log4jdbc:"
spring:
  datasource:
    url: jdbc:log4jdbc:mysql://localhost:3306/dbname
    driver-class-name: net.sf.log4jdbc.DriverSpy

‌3、配置日志级别‌(logback.xml):

<logger name="jdbc.sqlonly" level="DEBUG"/>  <!-- 仅输出 SQL -->
<logger name="jdbc.sqltiming" level="INFO"/> <!-- 输出 SQL 及执行时间 -->

此工具支持参数替换及 SQL 格式化。

三、自定义拦截器输出参数(原始 MyBatis)

‌适用场景‌: 需定制化输出格式
‌实现步骤‌:

‌1、创建拦截器类‌:

@Intercepts({@Signature(type = Executor.class, method = "update", args = {MappedStatement.class, Object.class}),
             @Signature(type = Executor.class, method = "query", args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class})})
public class SqlParamInterceptor implements Interceptor {
    @Override
    public Object intercept(Invocation invocation) throws Throwable {
        Object parameter = invocation.getArgs()[1];
        // 解析参数并拼接 SQL
        System.out.println("Params: " + parameter);
        return invocation.proceed();
    }
}

2‌、注册拦截器‌(mybatis-config.xml):

<plugins>
    <plugin interceptor="com.example.interceptor.SqlParamInterceptor"/>
</plugins>

此方式需自行解析参数绑定逻辑,灵活性高但实现复杂。

四、注意事项

1‌、性能影响‌

输出完整 SQL 会增加日志量,生产环境建议关闭 DEBUG 级别日志。

2、参数敏感信息‌

若 SQL 含敏感参数(如密码),需过滤或脱敏处理。

3‌、IDE 工具支持‌

IDEA 可通过安装插件(如 MyBatis Log Plugin)直接查看参数替换后的 SQL。

磁感应强度B、磁场强度H、矢量磁位A的study 学完电磁场很久了但是对电磁场中磁感应强度B⃗\vec{B}B、磁场强度HHH、矢量磁位A⃗\vec{A}A,这几个变量所表征的含义一直很模糊,所以就总结了一下 阅读详情

相关推荐

《中国图书馆图书分类法》(第五版)详表(中图分类号查询表)

中文法分类

记录我目之所及的世界 4万+

Mybatis打印SQL语句常用方式

在使用mybatis进行开发的时候,由于可以动态拼接sql,这样大大方便了我们。但是也有一定的问题,当我们动态sql拼接的块很多的时候,我们要想从*mapper.xml中直接找出完整的sql就会非常的难,这个时候经常会需要把组合之后的完整SQL语句打印出来,对调试非常有帮助的。在Mybatis的配置文件中添加debug标签,设置为true即可打印SQL语句和参数信息,同时也会输出相关的结果集信息。在Mybatis的配置文件中配置log4j或其他日志框架,然后配置输出级别、输出格式等。

yangzhihua的专栏 1万+

SAP-ABAP:SAP客户端管理核心事务码SCC4深度解析

SAP客户端管理核心事务码SCC4深度解析

baidu_35680696的博客 1568

MyBatis插件开发——解析和记录输出完整的SQL语句

自定义MyBatis插件,该插件实现当MyBatis执行SQL发生异常时输出错误原因,SQL参数以及完整的SQL语句。在日常的开发中我们可以通过mybatis配置设置是否输出SQL,但是对于正常运行的SQL全部输出出来日志量过大,所以这里实现了仅针对于发生异常的时候输出执行的SQL语句。对于日志输出的SQL框架仅提供了带有占位符的SQL以及对应的参数,如果想要测试运行这个SQL还需要自己手动拼接下,所以为了提高效率,在插件中对于SQL进行解析和占位符的替换,最终输出的SQL语句是可以直接在数据库中运行的。

发现问题,面对问题,分析问题,解决问题,总结问题 3966

开关电源|控制方式PWM、PFM、混合调制

频率调制器根据误差放大器的输出大小来改变方波信号的频率,若负载电流突然增加,输出电压 Vout随之下降,反馈电压 VFB 减小,此时误 差放大器的输出增高,频率调制器输出方波信号的频率增大,增加电感充电次数;若负载电流突然增加,输出电压Vom随之下降,反馈电压Vr减小,此时误差放大器的输出增高,PWM比较器输出方波信号的占空比增大,增加电感充电时间:若负载电流突然下降,PWM比较器输出方波信号的占空比减小,减少电感充电时间,从而稳定输出电压。它是在固定开关频率下,通过改变脉冲宽度来调节占空比的。

weixin_46969363的博客 1万+

软考中级信息系统监理师(第二版)-第21章基础设施工程监理

由于网络信息技术的飞速发展,变化日新月异,网络设计不但要保证目前网络传输容量的要求,也要考虑今后网络的发展,满足当前以及今后相当一段时间内的网络需求,便于向新技术的升级和衔接,同时又需要保护原有的投资。通用布缆系统工程中,承建单位的竣工文档主要包括以下内容:承建合同,招标文件,投标文件,设计方案,工程实施组织设计方案,工程施工报告,隐蔽工程记录,变更记录,自测报告,信息点分布图(表),园区、楼宇、水平配线表,楼层平面图及无线设备点位图,无线设备信息表,竣工图纸等。多排安装时,列间距不应小于1200mm。

2301_78583973的博客 1400

Mybatis调试经常需要输出SQL语句,但你知道是怎么输出的嘛?

本文通过从实战如何输出Mybatis的SQL日志,讲述了Mybatis的日志机制是如何使用适配器模式,将各个第三方日志框架接口转换为框架内部自定义的日志接口。看完本文你就知道其中的奥秘了~

Linn的博客 1万+

【ESP32】1.编译、烧录、创建工程

本文介绍了在VSCode中搭建ESP32开发环境并烧录"Hello World"工程的过程。首先通过串口工具成功下载固件后,解决了OpenOCD报错问题。针对头文件无法识别的问题,修改了c_cpp_properties.json配置文件,调整了编译器路径和IntelliSense模式。文章还详细说明了创建新工程的步骤,包括选择芯片型号和项目模板,并验证了串口打印功能。最后提醒在项目构建时要等待完成,避免文件缺失。整个流程涵盖了环境搭建、代码烧录、调试及新项目创建等关键环节。

梁山1号 1485

编码技巧——Mybatis输出SQL日志

在开发环境调试代码,往往需要打印执行的SQL语句来判断mybatis的SQL语句是否符合预期,尤其是我们的SQL语句使用了较多的标签时,只有真正的执行到了mybatis的标签解析器后,才能生成最终的SQL语句;当遇到SQL语句看似解析正常但是执行的时候却报错,在这个时候如果mybatis本身的SQL日志没有打印,将会是非常头疼的。 本篇介绍几种获取最终执行的SQL语句的方法;

娜娜米的博客 1万+

FPGA实现PCIe接口

PCI Express(PCIe)是一种高速串行计算机扩展总线标准,在FPGA中实现PCIe接口可以实现与主机系统的高速数据通信。以下是FPGA实现PCIe接口的关键技术要点。

whm128的博客 1461

双端之Nginx+Php结合PostgreSQL搭建Wordpress

制作的 PG4WP 分支版本,它与所有版本的 WordPress 兼容,解决了原版的一些问题。参数,确保 PostgreSQL 正在监听默认端口(通常是 5432),或者你自定义的端口。:PG4WP 插件存在缺陷和不完整的功能,可能与最新版本的 WordPress 不兼容。的插件,它允许 WordPress 使用 PostgreSQL 数据库。,如果看到 Nginx 的默认欢迎页面,说明 Nginx 已正确安装。,如果看到 Nginx 的默认欢迎页面,说明 Nginx 已正确安装。

宇宙第一小趴菜的博客 1891

在 IntelliJ IDEA 中,可以将控制台输出的 SQL 语句和参数自动拼接成可执行 SQL 的插件叫做 “MyBatis Log Plugin“ 或 “MyBatis Log Free“。

在 IntelliJ IDEA 中,可以将控制台输出的 SQL 语句和参数自动拼接成可执行 SQL 的插件叫做 “MyBatis Log Plugin” 或 “MyBatis Log Free”。我搜索安装的是“MyBatis Log Format”,还挺好用的。推荐!!!

江河键行的博客 918

华为OD机试 - 字符串筛选排序 - 数组(Python/JS/C/C++ 双机位C卷 100分)

k如果大于字符串长度则输出最大ASCII码值的字母所在字符串的位置索引,如果第k个最小ASCII码值的字母存在重复 则输出该字母的最小位置索引。输入一个由N个大小写字母组成的字符串,按照ASCII码值从小到大进行排序,查找字符串中第K个最小ASCII码值的字母(k>=1)。k如果大于字符串长度则输出最大ASCII码值的字母所在字符串的位置索引,如果有重复字母则输出字母的最小位置索引。输出字符串中第k个最小ASCII码值的字母所在字符串的位置索引。第二行输入k ,k必须大于0 ,k可以大于输入字符串的长度。

学Java,找哪吒 1392

MyBatis-Plus SQL日志配置详解

配置项的作用是将,方便开发调试时实时查看执行的 SQL 语句、参数和结果。这是一个轻量级的日志实现,无需额外依赖日志框架(如 Log4j、SLF4J)。

RoseJunjun666的博客 1089

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

mybatis-plus配置控制台打印完整带参数SQL语句

转自:https://blog.youkuaiyun.com/moshowgame/article/details/90641657 版权声明:powered by 大狼狗郑锴/Moshow魔手 https://blog.youkuaiyun.com/moshowgame/article/details/90641657 问题背景 通常我们开发的时候,需要联合控制台和Navicat/PLSQL等工具进行语句的拼...

qq_36688928的博客 7196

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

mybatis配置日志功能

在配置文件中加入 我这里是mybatis.xml mybatis.xml文件加入日志配日志,可以在控制台输出执行的sql语句和参数,加入到标签里 setting:控制mybatis 全局行为 <settings> <setting name="logImpl"value="STDOUT_LOGGING"/> </settings> ...

hjs_75187712的博客 234

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

# MyBatis 拦截器实现 Mybatis sql 控制台完整输出

使用MyBatis拦截器实现Mybatis sql控制台完整输出 Mybatis拦截器 介绍 拦截器顾名思义,肯定是拦截某个请求或者接口,进行某种操作,例如我们可以实现HandlerInterceptor 接口,可以对web请求接口进行拦截,从而校验用户是否登录等。 MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括: 拦截执行器的方法:Executor (update, query, flushStatements,

不积跬步,无以至千里;不积小流,无以成江海 1655

Mybatis输出真实sql

本插件可以直接在控制台中输出MyBatis的真实SQL语句(替换参数后的SQL语句)及SQL耗时,方便开发调试过程。 ​​​​​​​import org.apache.ibatis.cache.CacheKey; import org.apache.ibatis.executor.Executor; import org.apache.ibatis.mapping.BoundSql; imp...

Amoon_的博客 998

mybatis-plus配置控制台输出SQL查询日志

mybatis-plus配置控制台打印完整带参数SQL语句

末尾卡片和博主交流学习! 519

mybatis查看执行的sql语句

mybatis在开发期间需要查看当前mybatis执行的sql语句,有很多种办法,例如使用log4j等方式,最简单的做法是利用mybatis自带功能设置 <setting name="logImpl" value="STDOUT_LOGGING" /> 这样一句话,就可以在执行的时候看到执行的sql语句以及参数情况了 具体做法:在mybatis配置文件中: <?xml ve...

liuyuncd的博客 2万+

mybatis向控制台打印SQL语句 mybatis-config.xml

<!--向控制台打印SQL语句--> <!--<settings>--> <!-- &lt;!&ndash; 打印查询语句 &ndash;&gt;--> <!-- <setting name="logImpl" value="STDOUT_LOGGING" />--> <!-...

wxjxxl的博客 1167

mybatis-plus控制台打印SQL

springboot工程下: 在application.yml添加配置 #mybatis-plus配置控制台打印完整带参数SQL语句 mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

m0_51082307的博客 333

java 输出sql结果_mybatis 通过拦截器打印完整的sql语句以及执行结果操作

开发过程中,如果使用mybatis做为orm框架,经常需要打印出完整的sql语句以及执行的结果做为参考。虽然mybatis结合日志框架可以做到,但打印出来的通常都是sql和参数分开的。有时我们需要调试这条sql的时候,就需要把参数填进去,这样未免有些浪费时间。此时我们可以通过实现mybatis拦截器来做到打印带参数的完整的sql,以及结果通过json输出到控制台。直接看代码和使用方法吧:mybat...

weixin_36239971的博客 1067

spring boot 项目打印sql日志和结果,使用logback或配置文件

在 Spring Boot 项目中使用 MyBatis 或 MyBatis-Plus 作为持久化框架时,你可以通过配置 Logback 来打印 SQL 日志及其结果。

2509_93929981的博客 301

SpringBoot + Mybatis 在控制台输出sql语句 yml

server: port: 862 servlet: context-path: /lss #springboot开启对jsp页面的热部署 jsp: init-parameters: development: true logging: config: classpath:logback-spring.xml level: com: lsm: mapper: customerorder: debu...

qq_39195596的博客 2911

工作纪实37-mybatis-plus关闭结果集输出log

1.springboot+mybatis-plus+logback.xml组合,运行mapper会把sql查询会把结果也打印出来),但是就是不想让它输出到控制台,今天就来记录一下如何操作才能不把sql结果集打印出来,当然sql语句还是会打印的。:注释掉yml中mybatis-plus configuration log-impl输出到控制台的配置;修改后再次查看sql打印情况,发现只有sql语句、参数、结果集中数据的数量被打印出了,效果达到。:在yml中增加log4j日志的配置。

~单人舞~的博客 3483
上一篇: Vue 集成 wangEditor5 公式编辑器的实现步骤‌
下一篇: ‌Element UI 双击事件(@cell-dblclick 与 @row-dblclick)
hellotutu
博客等级 码龄7年 102粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值