mybatis log插件不兼容idea 2023+版本,因其未适配新api;推荐改用mybatisx插件或配置日志框架输出sql。

MyBatis Log插件在IDEA 2023+版本里根本不能用
它只支持到 IDEA 2022.3,2023.1 及之后版本已彻底失效——不是配置问题,是插件本身没更新适配新 API。你点「Install Plugin from Disk」装进去,重启后看不到按钮、控制台也不拦截 SQL,不是你漏了哪步,是它压根不兼容。
替代方案只有两个:用 MyBatisX(官方推荐)或手动开 MyBatis 日志。前者能高亮 SQL、跳转 Mapper、生成 XML 片段;后者靠日志框架输出,更轻量但没交互能力。
用 MyBatisX 查看实时 SQL(推荐给日常开发)
它不是“Log 插件”的平替,而是从 IDE 层面解析 MyBatis 调用链,把 Mapper 接口调用和对应 SQL 绑定起来,还能一键格式化、执行、查看结果。
- 安装:Settings → Plugins → 搜
MyBatisX→ 安装并重启 - 必须开启「SQL 输出」:Settings → Languages & Frameworks → MyBatisX → 勾选
Show SQL in Console - 确保项目里用了标准命名约定,比如
UserMapper.java对应UserMapper.xml,否则 SQL 关联会断 - 运行时,SQL 会出现在
Run窗口的MyBatis SQL标签页,不是普通Console,别找错位置
不用插件,纯靠日志输出 SQL(适合调试或 CI 环境)
MyBatis 底层用的是 SLF4J + 具体实现(如 Logback),只要让 org.apache.ibatis 包的日志级别设为 DEBUG,SQL 就会打到控制台——这招在服务器上也有效,不依赖 IDEA。
- Spring Boot 项目:在
application.yml加这段:
logging:
level:
org.apache.ibatis: DEBUGlogback-spring.xml 或 log4j2.xml,加 <logger name="org.apache.ibatis" level="debug"></logger>
DEBUG 级别会同时打出预编译参数(Preparing: SELECT * FROM user WHERE id = ? 和 Parameters: 123(Long)),别只盯第一行以为没参数o.a.i.p.e.BaseExecutor 日志,说明生效了;如果只有 o.s.w.s.DispatcherServlet 类日志,大概率是包名写错了或没生效为什么 MyBatis Log 插件当年能截 SQL,现在不行?
它靠监听 IDEA 的「控制台文本流」,匹配正则提取 SQL 字符串。2023 年起,IDEA 把控制台输出管道重构为异步事件流,插件没权限直接 hook 文本渲染层,而且 MyBatis 默认日志输出格式也变了(比如加了时间戳前缀、线程 ID),旧正则全匹配失败。
真正容易被忽略的点是:哪怕你降级回 IDEA 2022.3,如果项目用了 MyBatis 3.5.10+,SQL 日志默认带换行和缩进,插件的正则还是可能漏掉部分语句——它本质上是个脆弱的文本解析器,不是真正的 SQL 拦截器。










