博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MyBatis mapper文件中的变量引用方式#{}与${}的差别
阅读量:7042 次
发布时间:2019-06-28

本文共 654 字,大约阅读时间需要 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”

转载于:https://www.cnblogs.com/wym789/p/7216837.html

你可能感兴趣的文章
表示数值的字符串
查看>>
我的友情链接
查看>>
【云快讯】之二十六《AWS推出网络文件存储EFS,进军NAS存储市场》
查看>>
iOS 百度地图使用详解
查看>>
树莓派+kali
查看>>
项目中实现国际化Spring配置
查看>>
Redis教程(十三):管线详解
查看>>
获取ie代理
查看>>
基于fedora16的nagios环境搭建--个人日记(8)--cacti安装
查看>>
我的友情链接
查看>>
Hibernate技术
查看>>
ElasticSearch API for JAVA 学习笔记
查看>>
我的友情链接
查看>>
记事本程序
查看>>
linux下单引号、双引号、反引号用法
查看>>
发展FiOS业务 提升用户上网速度
查看>>
学科前沿技术作业七
查看>>
java.lang.Exception: org.apache.http.conn.ConnectTimeoutException:
查看>>
java 像素小鸟
查看>>
jquery中的数组过滤筛选-$.grep()
查看>>