你想要在使用MyBatis的项目中,通过配置yml文件让日志打印出执行的增删改查SQL语句,这个需求在开发调试阶段非常实用。

配置方法(基于Spring Boot + MyBatis)

以下是完整的application.yml(或application.properties转yml格式)配置,核心是调整MyBatis和日志框架的级别:

1. 完整yml配置示例

# 应用配置
spring:
  # 数据源配置(基础,需根据你的数据库调整)
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/your_db?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: 123456

# MyBatis配置
mybatis:
  # 映射文件位置(按需配置)
  mapper-locations: classpath:mapper/*.xml
  # 实体类别名包(按需配置)
  type-aliases-package: com.example.entity
  configuration:
    # 开启驼峰命名自动转换(可选)
    map-underscore-to-camel-case: true
    # 开启SQL日志打印的核心配置(显示SQL语句)
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

# 日志配置(关键:控制SQL日志的详细程度)
logging:
  level:
    # 核心:指定mapper接口所在包,级别设为DEBUG(打印SQL+参数)
    com.example.mapper: DEBUG
    # 可选:如果想打印更详细的MyBatis日志,可追加以下配置
    org.apache.ibatis: DEBUG
    # 可选:屏蔽其他无关日志(如spring框架),避免日志刷屏
    org.springframework: INFO

2. 关键配置解释

  • mybatis.configuration.log-impl:指定MyBatis的日志实现类为标准输出(StdOutImpl),这是让SQL能被打印的基础。
  • logging.level.你的mapper包路径
    • 设为DEBUG:会打印完整的SQL语句 + 参数 + 执行结果(最常用);
    • 设为INFO:仅打印基础日志,不会显示SQL;
    • 设为TRACE:打印更详细的MyBatis底层日志(一般不需要)。
  • 注意:com.example.mapper需要替换成你项目中实际的Mapper接口所在包路径(比如com.xxx.dao)。

3. 效果验证

配置完成后,启动项目执行增删改查操作,控制台会输出类似日志:

==>  Preparing: INSERT INTO user (name, age) VALUES (?, ?) 
==> Parameters: 张三(String), 25(Integer)
<==    Updates: 1

补充说明(不同日志框架适配)

如果你的项目使用logback/log4j2等日志框架,无需修改log-impl,只需保证:

  1. 日志框架依赖正常引入(Spring Boot默认集成logback);
  2. logging.level.你的mapper包设为DEBUG即可。

总结

  1. 核心配置是logging.level.xxx.mapper=DEBUG(控制SQL日志级别) + mybatis.configuration.log-impl=StdOutImpl(指定日志输出方式);
  2. 必须替换com.example.mapper为项目实际的Mapper接口包路径,否则日志不会生效;
  3. 开发环境建议设为DEBUG,生产环境建议改为INFO/WARN,避免敏感SQL泄露且减少日志量。

刚学java菜鸡,永劫无间蚀月,王者荣耀王者,金铲铲小铂金,第五人格菜鸡,原神开服玩家,星穹铁道菜鸡,崩坏的菜鸡,闪耀暖暖,和平精英,LOL,CSGO,以及三A大作收集者等等。。。