MyBatis-Plus SQL日志配置详解

发布于:2025-08-06 ⋅ 阅读:(11) ⋅ 点赞:(0)

mybatis-plus 配置项 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 的作用是将 MyBatis 的 SQL 日志直接输出到控制台,方便开发调试时实时查看执行的 SQL 语句、参数和结果。这是一个轻量级的日志实现,无需额外依赖日志框架(如 Log4j、SLF4J)。

作用详解:

  1. 输出 SQL 语句:将 MyBatis 执行的 SQL 语句(包含动态参数占位符 ?)打印到控制台。
  2. 输出参数值:显示 SQL 中每个占位符 ? 对应的实际参数值。
  3. 输出结果行数:显示 SQL 影响的行数或查询返回的记录数。
  4. 开箱即用:无需配置复杂的日志框架,适合快速调试。

实例演示:

步骤 1:在配置文件中启用配置 (以 application.yml 为例)
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl  # 关键配置
步骤 2:执行一个查询操作

假设有一个查询用户的方法:

@Mapper
public interface UserMapper extends BaseMapper<User> {
    // 继承 BaseMapper 的 selectById 方法
}

// 调用查询
User user = userMapper.selectById(1L);
步骤 3:控制台输出日志

执行代码后,控制台会打印如下日志:

==>  Preparing: SELECT id,name,email,age FROM user WHERE id=? 
==> Parameters: 1(Long)
<==    Columns: id, name, email, age
<==        Row: 1, Jack, jack@example.com, 30
<==      Total: 1
日志解析:
输出内容 说明
==> Preparing: ... 实际执行的 SQL 语句(? 是参数占位符)
==> Parameters: 1(Long) SQL 参数值(参数 1,类型为 Long
<== Columns: ... 查询返回的字段名
<== Row: ... 查询返回的一行数据
<== Total: 1 查询结果总行数(此处返回 1 行)

生产环境注意事项:

  1. 性能影响:频繁输出日志会影响性能,生产环境建议关闭或改用文件日志(如 SLF4J)。
  2. 敏感信息:日志可能暴露敏感数据(如参数值),需做好脱敏处理。
  3. 替代方案:生产环境推荐使用标准日志框架(配置示例):
    mybatis-plus:
      configuration:
        log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl  # 使用 SLF4J
    

对比其他日志实现:

配置值 特点 适用场景
org.apache.ibatis.logging.stdout.StdOutImpl 直接打印到控制台,简单直接 本地调试
org.apache.ibatis.logging.slf4j.Slf4jImpl 集成 SLF4J,可输出到文件/网络 生产环境
org.apache.ibatis.logging.nologging.NoLoggingImpl 关闭所有 MyBatis 日志 性能要求极高的场景

提示:在开发阶段使用 StdOutImpl 能极大提升调试效率,是排查 SQL 问题的利器。


网站公告

今日签到

点亮在社区的每一天
去签到