MyBatis中井号与百分号的区别

742 阅读1分钟

title: MyBatis中#与%的区别 date: 2017.06.08 20:02 categories:

  • 技术博客 tags:
  • 框架使用
  • MyBatis

百度一搜这个问题发现有个地方总结的不错,但出处我找不到,放个链接在这里:区别详解

社区原文档链接中关于String Substitution的介绍也很简短,我截个图放这里:

大意是说,#{}会触发生成JDBC预编译语句,同时也是更加安全快速推荐的写法,但满足不了排序等注值非修改的需求,通常情况#{}会对传入的参数进行修改(加'')或者转义操作。

因而%{}在排序ORDER BY这种小众场景中就派上了用场,该写法不会进行转义,例如ORDER BY ${columnName}就可以让SQL语句完成排序的功能。

但注意:一定要适当使用%{},因为其不安全,阻止不了SQL注入等攻击手段。

所以,首先搞清楚二者的用法,其次一定要注意安全。