你想要在使用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,只需保证:
- 日志框架依赖正常引入(Spring Boot默认集成logback);
logging.level.你的mapper包设为DEBUG即可。
总结
- 核心配置是
logging.level.xxx.mapper=DEBUG(控制SQL日志级别) +mybatis.configuration.log-impl=StdOutImpl(指定日志输出方式); - 必须替换
com.example.mapper为项目实际的Mapper接口包路径,否则日志不会生效; - 开发环境建议设为
DEBUG,生产环境建议改为INFO/WARN,避免敏感SQL泄露且减少日志量。