(10)MyBatis的日志工厂(了解即可后续集成spring)

✅ 一句话核心

MyBatis 本身不实现日志,而是通过日志工厂适配你项目中已有的日志框架(如 SLF4J、Log4j 等),用于输出 SQL 语句、参数、结果等,方便调试。


🔧 日志工厂支持的实现(按优先级自动探测)

MyBatis 启动时会按以下顺序自动查找日志实现(找到即停):

  1. SLF4J(最推荐,现代项目标配)
  2. Apache Commons Logging
  3. Log4j2
  4. Log4j
  5. JDK logging(java.util.logging)
  6. NO_LOGGING(关闭日志)

💡 如果你用 Spring Boot,默认集成 SLF4J + Logback,MyBatis 会自动使用它。


🛠 如何开启 SQL 日志?

方法一:在 mybatis-config.xml 中显式指定(可选)
xml 复制代码
<settings>
  <setting name="logImpl" value="SLF4J"/>
</settings>

MyBatis 没有"自带"的日志实现(除了 STDOUT),它不用引入任何依赖

常用值:SLF4J、LOG4J、LOG4J2、JDK_LOGGING、NO_LOGGING

方法二:什么都不配(推荐)

只要 classpath 里有 SLF4J 或 Log4j,MyBatis 会自动用------无需配置。


🔍 日志能看什么?(开发必备)

开启后,控制台会输出:

log 复制代码
==>  Preparing: SELECT * FROM user WHERE id = ?
==> Parameters: 1(Integer)
<==    Columns: id, user_name, email
<==        Row: 1, 张三, zhangsan@example.com
<==      Total: 1
  • 执行的 SQL
  • 绑定的参数(防注入,显示 ? 替代)
  • 返回结果行数

⚠️ 大厂避坑指南

  1. 不要用 System.out.println 调试 SQL → 用日志!

  2. 生产环境保留 SQL 日志开关 :通过日志级别(如 debug)控制,避免性能损耗。

    yaml 复制代码
    # Spring Boot application.yml
    logging:
      level:
        com.your.mapper: debug
  3. 如果看不到日志:

    • 检查是否引入了日志依赖(如 slf4j-api + logback-classic)
    • 检查日志级别是否为 DEBUG(MyBatis 日志是 DEBUG 级别)

✅ 总结

问题 答案
MyBatis 用什么打日志? 适配你项目已有的日志框架(优先 SLF4J)
需要手动配置吗? 一般不用,除非你想强制指定
如何看到 SQL? 确保日志级别为 DEBUG,Mapper 包路径开 debug
生产能开吗? 可以,但建议按需开启(通过日志配置动态控制)

💡 记住:SQL 日志 = 开发效率神器,但靠日志级别管控,不是硬编码。

需要我给你一个 Spring Boot 下完整开启 MyBatis SQL 日志的配置示例吗?

相关推荐
thefool112266几秒前
多线程 4
java
Rain的Java大神之路17 分钟前
[特殊字符]8年Java老兵转型AI Agent:90%的人挂在同一个坑,根本不用学Python!(万字实战复盘,建议收藏)
java·数据库·人工智能·后端·python·spring·ai编程
高级程序源38 分钟前
springboot大学生体测系统72170-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·python·django·课程设计
IT研究室1 小时前
最新计算机毕业设计选题推荐-基于spring boot的文学名著分享系统-网站-文档指导-Java-springboot
java·spring boot·课程设计
denlaku1 小时前
JDK 13 新特性详解
java·开发语言
秋饼1 小时前
Java 后端企业级 LLM 网关实战:Spring Cloud Gateway 构建统一大模型接入层
java·ai·技术分享·后端开发
今年下半年1 小时前
【防重放】Spring Boot 通过自定义注解实现接口防重放
java·spring boot·自定义注解·防重放
WeiXin_DZbishe1 小时前
基于Node.js的马拉松赛事管理系统的设计与实现-计算机毕设 附源码【课程设计】90211
java·javascript·vue.js·python·php·课程设计
Wang's Blog1 小时前
Java 项目部署之 Docker工具快速入门: 使用 Docker 镜像命令练习
java·docker
桃西西呀1 小时前
Spring AI Alibaba 之九:我让 Agent 接着上一轮往下聊,它却只还给我一条消息,多轮记忆到底藏在哪
人工智能·spring·llm