title: MyBatis中#与%的区别 date: 2017.06.08 20:02 categories:
- 技术博客 tags:
- 框架使用
- MyBatis
百度一搜这个问题发现有个地方总结的不错,但出处我找不到,放个链接在这里:。
中关于String Substitution
的介绍也很简短,我截个图放这里:
大意是说,#{}
会触发生成JDBC
预编译语句,同时也是更加安全快速推荐的写法,但满足不了排序等注值非修改的需求,通常情况#{}
会对传入的参数进行修改(加''
)或者转义操作。
因而%{}
在排序ORDER BY
这种小众场景中就派上了用场,该写法不会进行转义,例如ORDER BY ${columnName}
就可以让SQL
语句完成排序的功能。
但注意:一定要适当使用%{}
,因为其不安全,阻止不了SQL
注入等攻击手段。
所以,首先搞清楚二者的用法,其次一定要注意安全。