mybatis-plus debug级别打印sql日志

mybatis-plus:
  configuration:
    # 打印执行的SQL语句及返回的数据
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
在使用 MyBatis-Plus 与 Spring Boot 整合时,想要 **打印 SQL 语句** 是非常常见的需求,主要用于调试和排查问题。下面我将详细介绍如何开启 SQL 打印,并提供完整配置示例。 --- ## ✅ 方法一:通过 `application.yml` 配置日志输出(推荐) 这是最简单、最常用的方式,利用 MyBatis-Plus 内置的日志功能,配合 Spring Boot 的日志系统输出 SQL。 ### 1. 添加日志配置到 `application.yml` ```yaml # application.yml logging: level: # 设置 Mapper 接口所在的包为 debug 级别,让其输出 SQL com.example.boke.dao: debug # 或者更具体地指定某个 Mapper # com.example.boke.dao.UserDao: debug # 可选:打开 MyBatis-Plus 核心日志 com.baomidou.mybatisplus: debug ``` > 🔍 注意:`com.example.boke.dao` 是你存放 Mapper 接口的包名,请根据实际项目修改! --- ### 2. 确保你的 Mapper 继承了 `BaseMapper` MyBatis-Plus 的 CRUD 方法来自 `BaseMapper`,只有调用这些方法才会被自动追踪。 ```java public interface UserDao extends BaseMapper<User> { // 自定义方法也可以在这里 } ``` --- ### 3. 启动项目查看控制台 SQL 输出 启动后执行一次数据库操作(如查询用户),你应该能在控制台看到类似如下内容: ```sql ==> Preparing: SELECT id,name,password FROM user WHERE name = ? ==> Parameters: zhangsan(String) <== Columns: id, name, password <== Row: 1, zhangsan, 123456 <== Total: 1 ``` 这说明 SQL 已经成功打印出来了。 --- ## ✅ 方法二:使用 MyBatis-Plus 内置性能分析插件(已废弃,仅适用于旧版本) ⚠️ 注意:从 MyBatis-Plus 3.4.0+ 开始,`PerformanceInterceptor` 已被 **移除**,不再支持。 如果你使用的是老版本(<3.4.0),可以这样配置: ```java @Bean @ConditionalOnMissingBean public PerformanceInterceptor performanceInterceptor() { return new PerformanceInterceptor(); } ``` 但现在推荐使用 **`p6spy`** 替代。 --- ## ✅ 方法三:使用 `p6spy` 实现格式化 SQL 输出(推荐用于美化 SQL) `p6spy` 是一个数据库代理框架,能拦截 JDBC 操作并输出格式化的 SQL,还能显示执行时间。 ### 1. 添加依赖(Maven) ```xml <dependency> <groupId>p6spy</groupId> <artifactId>p6spy</artifactId> <version>3.9.1</version> </dependency> ``` ### 2. 修改 `application.yml` 中的数据源驱动类 ```yaml spring: datasource: driver-class-name: com.p6spy.engine.spy.P6SpyDriver url: jdbc:p6spy:mysql://localhost:3306/your_db?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai username: root password: 123456 ``` ### 3. 创建 `spy.properties` 文件(放在 `src/main/resources` 目录下) ```properties # spy.properties modulelist=com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory # 日志输出到控制台 appender=com.p6spy.engine.spy.appender.Slf4JLogger # 是否启用日志过滤(可按 sql 类型过滤) filter=false # 过滤 include/exclude(可选) include = exclude = # 自定义日志格式 logMessageFormat=com.p6spy.engine.spy.appender.CustomLineFormat customLogMessageFormat=%(time)|%(executionTime) ms|%(category)|connection %(connectionId)\n%(sql)%n ``` ✅ 输出效果示例: ``` 17:23:45.123|12 ms|statement|connection 1 SELECT id,name FROM user WHERE name='zhangsan' ``` 优点: - 显示执行耗时 - 格式清晰 - 支持所有数据库操作(包括批量、事务等) --- ## ✅ 补充:开启 MyBatis 极简日志实现(备用方案) 如果只想看基本 SQL,也可在 `application.yml` 中添加: ```yaml mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl ``` 这个会直接把 SQL 打印到标准输出,适合快速调试。 --- ## 🧩 总结对比表 | 方式 | 是否推荐 | 特点 | |------|----------|------| | `logging.level.mapper_package: debug` | ✅ 推荐 | 简单易用,无需额外依赖 | | `StdOutImpl` 日志实现 | ✅ 推荐 | 快速启用,适合初学者 | | `p6spy` | ✅✅ 强烈推荐(生产友好) | 格式化输出、带执行时间、可监控慢查询 | | `PerformanceInterceptor` | ❌ 不推荐 | 已废弃 | --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值