

sqlSource接口中最底层的,最基础的是: StaticSqlSource,里面sql字段用于存放解析好的sql,比如将'#{}'替换为“?”占位符
BoundSql getBoundSql(Object parameterObject);
RawSqlSource--.>StaticSqlSource-- >sql
常规的解析Mapper.xml的时候,我们创建SqlSource对象:
XMLStatementBuilder.parseStatementNode()

//XMLScriptBuilder类
public SqlSource parseScriptNode() {
MixedSqlNode rootSqlNode = parseDynamicTags(context);
SqlSource sqlSource;
if (isDynamic) {
sqlSource = new DynamicSqlSource(configuration, rootSqlN

本文深入探讨MyBatis的SqlSource和SqlNode,讲解StaticSqlSource如何处理静态SQL,将'#{}'替换为'?',以及DynamicSqlSource在getBoundSql()时进行动态SQL解析的工作原理。SqlNode接口利用组合模式构建SQL语句树,处理如<forEach>等标签,TextSqlNode和StaticTextSqlNode分别处理动态和静态文本节点。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



