源码分析MyBatis中#{}与${}的解析_java



前言

在面试中我们经常会被到MyBatis中 #{} 占位符与​​${}​​占位符的区别。大多数的小伙伴都可以脱口而出#{} 会对值进行转义,防止SQL注入。而​​${}​​则会原样输出传入值,不会对传入值做任何处理。本文将通过源码层面分析为啥#{} 可以防止SQL注入。

#{}占位符的解析与参数的设置过程梳理

  1. 假如我们有如下SQL语句。
1SELECT * FROM author WHERE name = #{name} AND age = #{age}

更多文章请关注《万象专栏》