当前位置:   article > 正文

update 子查询_Mybatis 动态查询原理探究(2)

mybatis update 子查询

ef3ae4519bdda53d072be4f6108fc111.png
本文内容会针对Mybatis动态sql的原理进行深入剖析,会探究以下几点
  • Mybatis如何解析动态SQL语句
  • Mybatis如何使用动态SQL语句

上一节,我们终于找到了和动态查询有关的信息了

aea41ef1133d085b9c25b91df91f1268.png

这给我们发送了一个信号,就是我们想要的信息是在SqlSource这个类中,我们可以从这个类中,知道Mybatis是如何解析动态SQL语句的。

我们首先在MappedStatement中,看下这个SqlSource是如何赋值的

e5554e732a4c06f2102125027abcd703.png

然后把断点打到这里

953f0a4bcc400f0b1493f1bc042b6834.png

分析它的堆栈信息

上一级调用的地方是:MapperBuilderAssistant 中的 addMappedStatement方法

3b7c7cc48a0b7ae051fa16e2396c8922.png
MapperBuilderAssistant 中的addMappedStatement方法

再上级就是 XMLStatementBuilder中的parseStatementNode方法

d3cc980cfc4b3d8054ad24167c26ab62.png
XMLStatementBuilder的 parseStatementNode

我们跟踪到了SqlSource的来源,它是由XMLLanguageDriver调用createSqlSource创建的

be5b5d1ab97d8b3fce8a8c4074a76cc9.png
XMLLanguageDriver 中的 createSqlSource方法

我们进入到XMLScriptBuilder后,发现我们的答案应该就在这里了

public class XMLScriptBuilder
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/241456
推荐阅读
相关标签
  

闽ICP备14008679号