Spring Boot 整合MaBatis如何在控制台打印执行的SQL语句

第一种在Spring Boot 的配置文件application.yml中加入

configuration:
  log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

或者加入

logging:
    level:
      com.XXX.Mapper: debug  (红色部分为Dao层的包名,注意不是XML文件的包名)

两个任意一种即可,不用全部加上

Preparing后面跟的为SQL语句,Parameters后面跟的是参数,参数顺序与 ? 顺序一致。

<think>我们被要求回答:在Spring Boot项目中让控制台打印SQL语句的方法。 根据提供的引用,我们可以总结出几种方法: 方法1:通过MyBatis配置(使用StdOutImpl) 在application.yml或application.properties中配置mybatis.configuration.log-impl为org.apache.ibatis.logging.stdout.StdOutImpl。 示例(yml): mybatis: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 方法2:通过日志级别配置 在application.yml或application.properties中配置特定包(通常是mapper接口所在的包)的日志级别为debug。 示例(yml): logging: level: com.example.mapper: debug # 将com.example.mapper替换为你的mapper接口所在的包 方法3:如果使用mybatis-plus,同样可以通过配置日志实现(与MyBatis类似) 在application.yml中配置: mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 注意:引用[5]提到了日志级别,从高到低为:SEVERE > WARNING > INFO > CONFIG > FINE > FINER > FINEST。在配置日志级别时,设置为debug(对应FINE级别)可以打印SQL语句。 另外,引用[4]提到了引入mybatis-plus的依赖,但这不是打印SQL的必要条件,除非你使用的是mybatis-plus。 总结: 推荐两种主要方式: 1. 使用MyBatis(或MyBatis-Plus)的日志实现直接输出SQL(方法1和方法3),这种方式会将SQL语句直接打印控制台,格式清晰,包含参数。 2. 通过设置日志级别(方法2),这种方式会输出DEBUG级别的日志,通常包括SQL语句和参数,但可能还会输出其他DEBUG信息。 具体选择哪种方式取决于个人需求。如果只需要看SQL语句,第一种方式更直接;如果希望结合其他日志信息,可以使用第二种。 注意:在配置时,请确保配置文件的格式正确(yml或properties)。 下面分别给出两种配置的示例: 示例1(使用StdOutImpl,application.yml): ```yaml mybatis: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl ``` 示例2(设置日志级别,application.yml): ```yaml logging: level: com.example.mapper: debug # 替换成你的mapper接口所在包 ``` 示例3(使用mybatis-plus,application.yml): ```yaml mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl ``` 注意:如果同时配置了mybatis和mybatis-plus,请注意它们之间的配置可能会相互影响,根据实际情况选择一种配置即可。 最后,如果使用properties文件,配置方式类似,例如: # 方法1 mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl # 方法2 logging.level.com.example.mapper=debug # 方法3(mybatis-plus) mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl 请根据项目实际情况选择合适的方法。 </think> 在 Spring Boot 项目中实现控制台打印 SQL 语句,主要有以下两种标准方法,可根据项目需求选择合适方案: ### 一、MyBatis 原生配置(推荐) 在 `application.yml` 中添加配置,直接启用 MyBatis 的 SQL 打印功能: ```yaml mybatis: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl ``` 效果: - ✅ 直接打印完整 SQL 语句及参数 - ✅ 显示执行时间 - ✅ 无需修改代码 - ❌ 仅适用于 MyBatis/MyBatis-Plus 示例输出: ```sql ==> Preparing: SELECT * FROM users WHERE name = ? ==> Parameters: John(String) <== Total: 1 ``` ### 二、日志级别配置(通用方案) 在 `application.yml` 中配置特定包路径的日志级别: ```yaml logging: level: # 替换为实际 Mapper 包路径 com.example.mapper: debug org.hibernate.SQL: debug # Hibernate 项目使用 org.hibernate.type: trace # 打印参数值 ``` 效果: - ✅ 适用于所有持久层框架(MyBatis/Hibernate/JPA) - ✅ 可控制详细程度(debug/trace) - ✅ 支持按包路径精细控制 - ❌ 需要知道 Mapper 接口包路径 ### 三、MyBatis-Plus 专用配置 若使用 MyBatis-Plus,添加依赖: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.3.1</version> </dependency> ``` 配置如下: ```yaml mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl ``` ### 四、日志级别对照表 | 日志级别 | 适用场景 | 输出内容 | |----------|------------------------------|-----------------------------| | DEBUG | 基础调试 | SQL 语句 | | TRACE | 详细调试(推荐) | SQL 语句 + 参数值 | | INFO | 生产环境 | 仅显示操作类型 | ### 五、注意事项 1. **生产环境禁用**:上线前务必关闭 SQL 打印,避免性能和安全问题 2. **参数敏感信息**:TRACE 级别可能打印敏感数据,测试环境慎用 3. **日志框架兼容**:确保项目已集成 SLF4J 或 Logback 4. **动态启停**:可通过 `@ConditionalOnProperty` 实现环境隔离 > 提示:对于复杂 SQL 调试,建议结合数据库管理工具(如 DBeaver、Navicat)进行验证[^1]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值