上一篇分析了SqlSession执行sql的过程,其中并没有分析sql是从哪里来的,今天就来仔细分析下。
Sql来源
从上一篇的最后一步执行sql那里倒推sql的来源,源码主要过程如下图:
可以看到最后是通过BoundSql直接获取的sql,然后往前倒推最后发现是通过MappedStatement的getBoundSql方法返回的。MappedStatement在之前分析mapper的时候知道一个执行sql对应一个MappedStatement对象,它封装有mybatis中需要执行一条sql的所有信息,所以从这里获取也是理所应当的。
MappedStatement的getBoundSql方法
那么就来看下MappedStatement的getBoundSql方法吧,源码如下图: