MyBatis mapper文件中的变量引用方式#{}与${}的差别
来源:互联网 发布:C语言经典算法实现 编辑:程序博客网 时间:2024/06/06 04:58
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”,如:
- <select id="queryMetaList" resultType="Map" statementType="STATEMENT">Select * from emp where name = ${employeeName} ORDER BY ${columnName}</select>
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配置方式
- Android深入浅出之Binder机制
- 迭代(Iteration)与递归(Recursion)
- hdu 1021 - Fibonacci Again
- setUserVisibleHint()方法的懒加载
- JAVA基础知识
- MyBatis mapper文件中的变量引用方式#{}与${}的差别
- 如今仍在工作的12名最“屌”的程序员
- c++利用SqlApi访问SqlServer数据库(存储过程篇)
- 字符串初始化指针和初始化数组区别
- (三)C# winform C/S WebBrowser 微博第三方授权登录
- Struts迭代器(iterator)遍历List常用的4种例子
- iptables实现网卡包转发
- yii2 rbac权限控制之菜单menu详细教程
- oracle trunc 函数处理日期格式