[DB][mybatis]MyBatis mapper文件引用变量#{}与${}差异
2023-09-14 09:08:08 时间
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>
版权声明:本文博客原创文章,博客,未经同意,不得转载。
相关文章
- 02_Linux基础-文件系统层次结构-提示符-进程-命令格式-隐藏文件-通配符-绝对相对路径-{1..100}-ls-mkdir-其他基础命令
- 【黄啊码】PHP实现文件下载,支持断点续传
- MyBatis框架:第二章:传统mybatis的hello world 示例
- 通过又拍云CDN+对象储存实现Z-Blog文件、图片的储存及网站静态加速!
- Mybatis映射文件 — 常用标签及特殊字符的处理
- 浅谈MyBatis之Mapper文件详解编程语言
- mybatis xml文件中用 if 标签判断字符串是否相等详解编程语言
- Linux下按行分割文件的方法(linux按行分割文件)
- 夹路径Linux路径管理:探索文件夹之旅(linuxpath文件)
- 夹深入比较:Linux 中两个文件夹的异同(linux比较两个文件)
- Linux文件IO头文件io.h的使用(linuxio.h)
- Linux系统下复制文件到本地的方法(linux复制文件到本地)
- 探索Linux文件系统之旅(linux文件的类型)
- entr:文件更改时重新运行构建
- Linux调整INI文件技巧(linux.ini文件)
- Linux下解压文件的简单操作(linux解压文件)
- Linux文件匹配:如何用命令行查找匹配的文件?(linux文件匹配)