MyBatis mapper文件中的变量引用方式#{}与${}的差别
来源:互联网 发布:怎么才能恢复视力 知乎 编辑:程序博客网 时间:2024/06/07 11:06
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配置方式
- unity3D-游戏/AR/VR在线就业班 C#入门一维数组学习笔记
- java基础笔记之IO流之字符流
- 12
- 进程Preferences数据共享
- oracle中的各种名字
- MyBatis mapper文件中的变量引用方式#{}与${}的差别
- jmeter中使用jdbc访问数据库
- 致远方致自己
- m序列生成电路
- android发送短信填入手机号码,6.0动态请求权限拨打电话
- 为庆祝游戏“白蛇快跑”上架AppStore,准备写几篇关于白蛇快跑的开发备忘录
- 泛型ArrayList转数组
- VS2013/MFC编程入门之七(对话框:创建对话框类和添加控件变量)
- 斐波那契?