Mybatis debug 时查询最终执行的SQL

1. 场景描述

在SQL优化或者定位问题时,需要拿到最终执行的 SQL。通过日志级别有可能不会生效,插件也是。

2. 使用方式

定位到 SimpleExecutor

ctrl + c 即可复制 SQL.

### 查看 MyBatis 调试模式下的分库 SQL 执行 MyBatis 提供了多种方式用于调试和查看实际执行SQL 语句。通过启用日志功能,可以捕获并分析分库后的 SQL 执行情况。 #### 启用 MyBatis 日志功能 为了在调试模式下查看分库 SQL执行过程,需要配置合适的日志框架并将日志级别设置为 `DEBUG` 或更低。以下是常见的几种方法: 1. **使用 Log4j 配置** 如果项目中集成了 Log4j,可以通过修改其配置文件来开启 MyBatis 的调试日志。 ```properties log4j.logger.org.mybatis=DEBUG log4j.logger.com.ibatis=DEBUG ``` 这些配置会打印出 MyBatis 在运行过程中生成的所有 SQL 语句及其绑定参数[^5]。 2. **使用 SLF4J 和 Logback** 对于基于 SLF4J 的项目,Logback 是一种常用的日志实现工具。类似的,在 Logback 中也需要将相关包的日志级别设为 DEBUG。 ```xml <logger name="org.mybatis" level="DEBUG"/> <logger name="com.ibatis" level="DEBUG"/> ``` 3. **直接输出到控制台** 若仅需临观察 SQL 输出而无需持久化日志,可简单地依赖标准输出流完成这一需求。例如,在 Spring Boot 应用程序中,可通过 application.properties 文件快速设定: ```properties logging.level.org.mybatis=DEBUG logging.level.com.ibatis=DEBUG ``` #### 分库场景下的特殊考虑 当涉及分库逻辑SQL 的动态拼接可能由 ShardingSphere 等中间件负责。此除了关注 MyBatis 自身的行为外,还需确保能够追踪到最终发送至各物理数据库的具体查询语句。 - **ShardingSphere 日志支持** 如果采用 Apache ShardingSphere 实现分片,则应额外注意它的日志选项。默认情况下,ShardingSphere 可以记录重写的 SQL 文本以及路由决策详情。将其日志等级同样调整至 DEBUG 即可获取更多细节信息[^6]。 ```java // 示例代码片段展示如何结合 MyBatis 和 ShardingSphere 使用 @Configuration public class MyBatisConfig { @Bean public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception { SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); sessionFactory.setDataSource(dataSource); // 添加插件或其他自定义行为... return sessionFactory.getObject(); } } ``` #### 总结 综上所述,要查看 MyBatis 在调试模式下针对分库环境所执行的实际 SQL 语句,关键是合理配置日志系统,并兼顾任何参与其中的数据分片组件(如 ShardingSphere)。只有这样才能全面掌握整个请求链路中的数据交互状况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值