MyBatis mapper文件中的变量引用方式#{}与${}的差别
来源:互联网 发布:mac qq怎么截图 编辑:程序博客网 时间:2024/06/11 05:34
原文转自:http://blog.csdn.net/szwangdf/article/details/26714603
MyBatis mapper文件中的变量引用方式#{}与${}的差别
默认情况下,使用#{}语法,MyBatis会产生PreparedStatement语句中,并且安全的设置PreparedStatement参数,这个过程中MyBatis会进行必要的安全检查和转义。
示例1:
执行SQL:Select * from emp where name = #{employeeName}
参数:employeeName=>Smith
解析后执行的SQL:Select * from emp where name = ?
执行SQL:Select * from emp where name = ${employeeName}
参数:employeeName传入值为:Smith
解析后执行的SQL:Select * from emp where name =Smith
综上所述、${}方式会引发SQL注入的问题、同时也会影响SQL语句的预编译,所以从安全性和性能的角度出发,能使用#{}的情况下就不要使用${}
但是${}在什么情况下使用呢?
有时候可能需要直接插入一个不做任何修改的字符串到SQL语句中。这时候应该使用${}语法。
比如,动态SQL中的字段名,如:ORDER BY ${columnName}
注意:当使用${}参数作为字段名或表名时、需指定statementType为“STATEMENT”,如:
0 0
- MyBatis mapper文件中的变量引用方式#{}与${}的差别
- MyBatis mapper文件中的变量引用方式#{}与${}的差别
- MyBatis mapper文件中的变量引用方式#{}与${}的差别
- MyBatis mapper文件中的变量引用方式#{}与${}的差别
- MyBatis mapper文件中的变量引用方式#{}与${}的差别
- MyBatis mapper文件中的变量引用方式#{}与${}的差别
- MyBatis mapper文件中的变量引用方式#{}与${}的差别
- MyBatis mapper文件中的变量引用方式#{}与${}的差别
- MyBatis mapper文件中的变量引用方式#{}与${}的差别
- MyBatis mapper文件中的变量引用方式#{}与${}的差别
- MyBatis mapper文件中的变量引用方式#{}与${}的差别
- MyBatis mapper文件中的变量引用方式#{}与${}的差别
- [DB][mybatis]MyBatis mapper文件中的变量引用方式#{}与${}的差别
- [DB][mybatis]MyBatis mapper文件中的变量引用方式#{}与${}的差别
- 【Mybatis架构】Mapper映射文件中的#{}与${}
- Mybatis Mapper文件中的$和#的区别
- mybatis 不同Mapper文件引用resultMap
- mybatis的mapper配置方式
- MySQL Sleep连接过多问题解决方法
- 自定义jQuery插件的写法
- Python学习(五)—sorted排序函数
- (递归+非递归)迷宫求解
- java XML导出
- MyBatis mapper文件中的变量引用方式#{}与${}的差别
- 顺序表应用2:多余元素删除之建表算法
- Qt creator5.7 OpenCV249之双边滤波(含源码下载)
- 广播接收机制,广播发送者,广播接收者
- Android开发学习之路--性能优化之常用工具
- 理解对象关系持久层
- 在linux下安装opencv(参照官网)
- 23种设计模式(5):原型模式
- 单例模式(Singleton )的几种用法以及使用条件