Mybatis debug 查看sql(排查sql问题)

在遇到MyBatis的SQL执行不成功时,可以使用SimpleExecutor来调试。通过设置断点观察boundSql.sql以查看具体的SQL语句,利用boundSql.parameterMappings获取字段类型信息,以及boundSql.parameterObject来查看字段数据,以此诊断和解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天写mapper文件时候发现SQL一直执行不成功,mybatis也不会将sql反馈给我们,只能自己摸索了

SimpleExecutor

在这里插入图片描述
在这里插入图片描述
这边我们查询语句,打上断点看一看具体sql是什么

boundSql.sql中可以查看sql数据
在这里插入图片描述
boundSql.parameterMappings 可以获取字段类型等信息
在这里插入图片描述

boundSql.parameterObject 可以获取字段数据

### MyBatisMyBatis-Plus 的 SQL 日志打印差异分析 #### 差异原因 MyBatisMyBatis-Plus 都支持 SQL 日志的打印功能,但在实际使用中可能会遇到 MyBatis 能正常打印日志而 MyBatis-Plus 却无法打印的情况。这种现象的主要原因是两者的实现机制不同。 1. **默认行为的不同** MyBatis 默认提供了多种日志实现方式(如 `SLF4J`, `LOG4J` 等),并允许开发者通过配置指定具体的日志实现类[^1]。而在 MyBatis-Plus 中,默认的日志实现可能并未被正确加载或启用,因此即使进行了类似的配置也可能不起作用[^3]。 2. **依赖冲突或覆盖** 如果项目中存在多个日志框架(如 Logback, SLF4J, LOG4J 等),可能导致 MyBatis-Plus 的日志配置被其他框架覆盖,从而影响其正常的日志输出功能[^5]。 --- #### 解决方案 为了使 MyBatis-Plus 正常打印 SQL 日志,可以按照以下方法进行排查和调整: ##### 1. 使用 `application.properties` 或 `application.yml` 进行配置 在 Spring Boot 项目的配置文件中添加如下内容即可开启 SQL 日志打印功能: ```properties # application.properties mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl ``` 或者对于 YAML 格式的配置文件: ```yaml # application.yml mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl ``` 此配置的作用是指定 MyBatis-Plus 使用标准输出流来记录 SQL 执行日志[^2]。 ##### 2. 检查日志级别设置 确保应用的日志框架(如 Logback、Log4j)中的日志级别已正确设置为 DEBUG 或 TRACE,以便捕获更详细的日志信息。例如,在 `logback.xml` 文件中可作如下配置: ```xml <logger name="com.baomidou.mybatisplus" level="DEBUG"/> ``` 如果未正确设置日志级别,则即便启用了 `log-impl` 参数,SQL 日志仍不会显示[^4]。 ##### 3. 排除潜在的依赖冲突 检查 Maven/Gradle 构建工具中的依赖树,确认是否存在与其他日志库版本不兼容的问题。可以通过运行命令排除冗余依赖项: ```bash mvn dependency:tree ``` 必要时显式声明所需的日志库版本以避免冲突。 ##### 4. 自定义拦截器 当以上方法均无效时,可通过自定义插件的方式强制捕获 SQL 执行语句及其参数。创建一个基于 `Interceptor` 接口的组件,并将其注册至 MyBatis-Plus 的全局配置中: ```java import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import org.springframework.context.annotation.Bean; public class MyConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); // 添加自定义逻辑... return interceptor; } } ``` 这种方式能够提供更高的灵活性,满足特定场景下的需求。 --- ### 总结 MyBatis-Plus 不打印 SQL 日志的原因通常涉及配置遗漏、日志级别不当以及外部依赖干扰等方面。针对这些问题采取相应的解决方案后,应能顺利恢复预期的功能表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值