mybatis-动态sql解析
2024-10-28 14:41:27 0 举报
为你推荐
查看更多
mybatis-动态sql解析
作者其他创作
大纲/内容
contents.add(TextSqlNode)
递归解析-组合设计模式
创建xml脚本构造器器
new XMLScriptBuilder
将sql封装成StaticTextSqlNodecontents.add(StaticTextSqlNode)
XMLStatementBuilder#parseStatementNode
遍历所有子节点
是
List<SqlNode> contents = new ArrayList<>()
否
NodeHandler handler = nodeHandlerMap.get(nodeName);
获取节点对应的处理器
遍历所有的节点的apply()
textSqlNodeisDynamic
如果当前节点还有<where><trim>这种的
递归解析子节点
如果执行?
selectById这个sql元素会解析成:1层 MixedSqlNode <SELECT>2层 WhereSqlNode <WHERE>3层 IfSqlNode <IF>
解析的结果封装
重点解析createSqlSource
获取sql文本封装成TextSqlNode
调用handleNode
处理不同逻辑的动态节点
解析<select>节点
重点:1、动态sql的封装--->递归解析+组合设计模式2、执行动态sql,遍历所有的Node的apply方法,添加sql到后面
动态语句执行时需要追加到sql后面
初始化的时候,会创建针对不同节点的处理器
0 条评论
回复 删除
下一页