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

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

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

SimpleExecutor

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

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

boundSql.parameterObject 可以获取字段数据

<think>嗯,用户这次的问题是关于配置MyBatis控制台打印SQL方法。用户之前已经给出了三个站内引用,其中引用[1]和[2]直接涉及配置方法,引用[3]是MyBatis Plus的依赖配置。 用户可能正在开发基于Spring Boot的MyBatis项目,遇到了SQL日志不输出的问题。从ta明确要求"控制台打印SQL"来看,应该是在调试阶段需要实时查看SQL语句。考虑到MyBatis有原生版本和Plus版本的区别,需要分开说明。 引用[1]提供了完整的yml配置示例,包含两个关键点:mybatis-plus的log-impl设置和logging.level全局日志级别。引用[2]展示的是原生MyBatis的配置方式,但没有提日志级别。这里有个技术细节要注意:即使配置了log-impl,如果全局日志级别过高(比如INFO)也不会输出SQL,所以必须同时设置DEBUG级别。 用户可能混淆了MyBatisMyBatis Plus的配置差异。在回答时需要明确区分:原生MyBatis用configuration.log-impl,而Plus用mybatis-plus.configuration.log-impl。另外注意到引用[3]的依赖版本是3.3.1,这个细节值得保留,因为Plus的配置项在不同版本有差异。 准备在回复时采用分段式解决方案:先讲Plus版本的完整配置(结合引用[1]和[3]),再说明原生MyBatis的配置(引用[2]补充日志级别)。最后要强调常见的配置无效原因,比如全局日志级别不足或配置位置错误——这些是开发者最容易踩的坑。 用户应该需要立即可用的解决方案,所以代码块要完整可复制。但ta可能也会遇到环境差异问题,所以再补充了properties配置格式和logback的配置要点。那些"注意事项"其实是根据常见故障场景反推的,比如多数据源时需要单独指定SqlSessionFactoryBean。 </think>根据配置框架不同,MyBatis 控制台打印 SQL 主要有以下几种方法: ### 一、MyBatis-Plus 配置方案(推荐) ```yaml # application.yml 配置 mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 关键配置[^1] logging: level: root: DEBUG # 必须开启DEBUG级别[^1] ``` **依赖要求**: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.1+</version> <!-- 版本需匹配 --> [^3] </dependency> ``` ### 二、原生 MyBatis 配置方案 ```yaml # application.yml mybatis: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # SQL输出核心配置[^2] logging: level: com.your.mapper.package: DEBUG # 指定Mapper包路径[^2] ``` ### 三、.properties 文件格式 ```properties # application.properties mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl logging.level.com.example.mapper=DEBUG ``` ### 四、注意事项 1. **双重日志问题**: - 若出现重复SQL日志,排除其他日志框架的干扰 ```xml <!-- 排除SpringBoot默认日志 --> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> ``` 2. **多数据源配置**: ```java @Bean public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource) { SqlSessionFactoryBean factory = new SqlSessionFactoryBean(); factory.setConfiguration(new Configuration() {{ setLogImpl(StdOutImpl.class); // 编程式配置[^2] }}); return factory; } ``` 3. **Logback 单独配置**(当使用logback.xml时): ```xml <logger name="com.your.mapper" level="DEBUG"/> ``` > ⚠️ **配置无效排查**: > 1. 检查依赖冲突(尤其MyBatisMyBatis-Plus混用) > 2. 确认`log-impl`拼写正确(注意中划线) > 3. 重启服务使配置生效 ### 五、输出效果示例 ```sql ==> Preparing: SELECT * FROM user WHERE id = ? ==> Parameters: 100(Integer) <== Columns: id, name <== Row: 100, 张三 <== Total: 1 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值