由 Mybatis 源码畅谈软件设计(四):动态 SQL 执行流程

作者:京东保险 王奕龙本节我们探究动态 SQL 的执行流程,由于在前一节我们已经对各个组件进行了详细介绍,所以本节不再赘述相关内容,在本节中主要强调静态 SQL 和动态 SQL 执行的不同之处。在这个过程中,SqlNode相关实现值得关注,它为动态 SQL 标签都定义了专用实现类,遵循单一职责的原则,并且应用了。最后,我们还会讨论动态 SQL 避免注入的解决方案,它是在 Mybatis 中不可略过的一环。

本文探讨了动态 SQL 的执行流程,强调了其与静态 SQL 的区别。动态 SQL 通过 SqlNode 实现,遵循单一职责原则并应用装饰器模式。示例分析了动态 SQL 的解析过程及其防止 SQL 注入的机制,指出 #{} 占位符通过 JDBC 的 PreparedStatement 绑定参数以确保安全,而 $ 占位符则存在 SQL 注入风险。

原文中文,约8000字,阅读约需19分钟。发表于:
阅读原文