博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[DB][mybatis]MyBatis mapper文件引用变量#{}与${}差异
阅读量:5911 次
发布时间:2019-06-19

本文共 701 字,大约阅读时间需要 2 分钟。

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”,如:

版权声明:本文博客原创文章,博客,未经同意,不得转载。

你可能感兴趣的文章
关于如何在ElementUI中实现统计Table筛选结果数量
查看>>
解决HP打印机错误:Couldn't open fifo
查看>>
JS将秒转换为 天-时-分-秒
查看>>
Facebook 电面 02/01 2018
查看>>
让你的博客不再单调 --博客园设置随机背景图片教程
查看>>
<x:choose/>、<x:when/>、<x:otherwise/>标签
查看>>
开篇章
查看>>
数据库做分表查询
查看>>
百度云盘-真实地址 F12 控制台
查看>>
ios-表视图-demo3-单选
查看>>
linux线程的实现【转】
查看>>
你知道市面上机器人都用哪些操作系统吗【转】
查看>>
Maven项目pom.xml文件简单解析
查看>>
Daily Scrum - 11/19
查看>>
购物车程序练习
查看>>
Ubuntu12.04_X64 apt-get install 报错404
查看>>
CentOS 7 更新源 – 使用国内 163 yum 源
查看>>
SecureCRT 7.0 如何自动记录日志
查看>>
memcache命令
查看>>
tomcat8.5报错
查看>>