通过mybatis的Executor查看完成SQL语句

问题场景

在开发项目中,自己在本地测试的时候可能需要去验证SQL问题。但是会存在一些问题:例如,这条SQL语句是错误的,那么mybais在执行中会报错,并且SQL语句和参数都是处于分离的状态。

导致从打印台中复制出来的SQL语句在需要参数的地方都是显示符号。

执行前
Preparing : select * from user where id = ?
Parameters : 1(Integer)

成功执行后
==> select * from user where id = 1

SQL语句语法错误等问题
system ... check your mysql version ....(等等问题)

解决方案

这里通过理解mybaits一点源码去解析。

在mybatis中,最终通过Executor去执行我们的SQL,针对大多数情况而言,几乎都是使用SimpleExecutor去执行对应的查询语句。

我们可以通过找到这类,找到doQuery方法。

在这里插入图片描述
接着点进prepareStatement方法,发现都是JDBC的那一套。

1、获取数据库连接
2、预编译SQL
在这里插入图片描述
也就是在执行完prepareStatement方法后参数已经拼装完成,可以通过stmt对象去获取拼装好参数的SQL语句。

DEBUG结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值