讲师中心 微信公众号
AI工具推荐 视频效率加速

MyBatis 怎么打印完整 SQL 语句与日志级别调整

老婷吖_8099

老婷吖_8099

发布时间:2026-08-11 14:24:04

|

798人浏览过

|

来源于php中文网

原创

MyBatis打印完整SQL需精准配置日志级别、自定义LogImpl将SQL升至INFO、通过Interceptor拼接真实参数,同时避免全局DEBUG和TRACE导致的性能与OOM问题。

mybatis 怎么打印完整 sql 语句与日志级别调整

MyBatis 打印完整 SQL 语句,关键在于让日志输出包含 SQL 文本、实际参数值和执行结果,同时避免过度日志干扰。单纯靠默认 DEBUG 级别只能看到带 ? 占位符的语句,真正“可直接执行”的完整 SQL 需要额外处理。日志级别调整不是简单设成 DEBUG 就完事,而是要精准控制范围、降低侵入性、适配环境需求。

用日志框架精准控制 SQL 输出范围

MyBatis 内部按包路径分级打日志:DEBUG 级别打印 SQL 和参数,TRACE 级别才追加结果集。因此,只需把 Mapper 接口所在包设为 DEBUG,其他包保持 INFO 或更高,就能只看 SQL 不刷屏。

  • Spring Boot 中在 application.yml 里配置:
    logging:<br>  level:<br>    com.example.mapper: debug
  • Logback(logback-spring.xml)中:
    <logger name="com.example.mapper" level="DEBUG" />
  • Log4j2(log4j2.xml)中:
    <Logger name="com.example.mapper" level="debug" />

让 SQL 日志升到 INFO 级别(适合生产排查)

默认 DEBUG 日志在生产环境开启会淹没关键信息。可通过自定义 Log 实现类,把 MyBatis 的 debug() 调用转为 info() 输出,既保留 SQL 可读性,又不拉低整体日志水位。

Alibabacloud Sdk Client Initialization For Java
Alibabacloud Sdk Client Initialization For Java

在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。

下载
  • 写一个继承 org.apache.ibatis.logging.slf4j.Slf4jImpl 的类,重写 debug(String s) 方法,内部调用 logger.info(s)
  • 在 application.yml 中指定:
    mybatis:<br>  configuration:<br>    log-impl: com.yourpackage.MyInfoSlf4jImpl
  • 无需改日志框架配置,SQL 就自动出现在 INFO 日志流中,方便 grep 或 ELK 过滤

拦截器拼出带真实参数的完整 SQL

DEBUG 日志里的 Parameters: 18(Integer), true(Boolean) 还得手动替换,效率低。用 MyBatis Plus 的 InnerInterceptor 或原生 MyBatis 的 Interceptor,可在 Statement 准备阶段解析 BoundSql,把 #{} 替换成实际值,生成可复制粘贴的完整语句。

  • 提取 BoundSql.getSql() 和 MappedStatement.getParameterMap()
  • 借助 MetaObject 和 TypeHandlerRegistry 安全获取参数值,注意处理 null、集合、嵌套对象
  • 用正则或 StringBuilder 拼接,例如将 WHERE status = ? → WHERE status = 1
  • 建议加开关控制:开发环境开,生产环境关;或仅对慢 SQL 启用

避免踩坑的几个关键点

很多问题不是配置不对,而是细节没到位:

  • logImpl 必须显式指定:Spring Boot 自动装配可能 fallback 到 StdOutImpl(只走 System.out),导致 logback 配置失效。务必在 yml 中写明 log-impl: SLF4J 或 LOG4J2
  • 不要全局设 org.mybatis 为 DEBUG:会打出大量内部日志(如 TypeHandler 加载、XML 解析),应限定到具体 mapper 包
  • 结果集日志(TRACE)慎开:尤其查大表时,<== Total: 50000 后面跟着全部数据 toString(),极易 OOM
  • 动态 SQL 注意日志时机:日志是在 SQL 解析后、参数绑定前打的,所以看到的 SQL 是最终拼好的,但参数还没填入 —— 拦截器才是填参时机

相关文章

全能打印神器
全能打印神器

全能打印神器是一款非常好用的打印软件,可以在电脑、手机、平板电脑等设备上使用。支持无线打印和云打印,操作非常简单,使用起来也非常方便,有需要的小伙伴快来保存下载体验吧!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

LibLibAI
LibLibAI Hot

一款AI视频创作工具,主要用于国内领先的AI创意平台,以海量模型、低门槛操作与“创作-分享-商业化”生态,让小白与专业创作者都能高效实现图文乃至视频创意表达,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

相关专题

更多
mybatis一级缓存和二级缓存
mybatis一级缓存和二级缓存

在MyBatis中,一级缓存和二级缓存是两种不同级别的缓存机制,它们都可以用来提高性能。本专题提供mybatis一级缓存和二级缓存相关文章,大家可以免费阅读。

583

2023.08.21

ibatis和mybatis有什么区别
ibatis和mybatis有什么区别

ibatis和mybatis的区别:1、基本信息不同;2、开发时间不同;3、功能与易用性;4、配置文件;5、入参类型与出参类型;6、返回结果集接受方式;7、语法差异;8、数据库方言支持;9、插件支持;10、社区活跃度;11、全球化支持。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2122

2024.02.23

mybatis如何配置数据库连接
mybatis如何配置数据库连接

mybatis配置数据库连接的方法:1、指定数据源;2、配置事务管理器;3、配置类型处理器和映射器;4、使用环境元素;5、配置别名。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

446

2024.02.23

mybatis工作原理及流程是什么
mybatis工作原理及流程是什么

mybatis工作原理及流程:1、配置文件;2、接口与映射;3、sql解析与生成;4、执行计划;5、结果处理;6、动态sql;7、缓存机制;8、插件;9、事务管理;10、日志与监控;11、扩展性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

292

2024.02.23

hibernate和mybatis有哪些区别
hibernate和mybatis有哪些区别

hibernate和mybatis的区别:1、实现方式;2、性能;3、对象管理的对比;4、缓存机制。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

302

2024.02.23

Java MyBatis框架
Java MyBatis框架

本专题专注于Java主流ORM框架MyBatis的应用,系统讲解SQL映射、动态SQL、结果映射、分页查询、缓存机制与多表关联等核心内容,并结合企业管理系统、电商平台和后台管理项目实战,帮助学员全面掌握高效的数据库持久层开发技能。

5229

2025.08.26

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

0

2026.09.30

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

0

2026.09.29

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

200

2026.09.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
dev.java 官方:Learn Java
dev.java 官方:Learn Java

共0课时 | 0人学习

Java JDBC数据库连接官方教程
Java JDBC数据库连接官方教程

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn