#{}, ${}取值区别

Posted 逆水乘舟,不进则退

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#{}, ${}取值区别相关的知识,希望对你有一定的参考价值。

#{}:可以获取map中的值或者pojo对象属性的值;
${}:可以获取map中的值或者pojo对象属性的值;


select * from tbl_employee where id=${id} and last_name=#{lastName}
Preparing: select * from tbl_employee where id=2 and last_name=?
区别:
#{}:是以预编译的形式,将参数设置到sql语句中;PreparedStatement;防止sql注入
${}:取出的值直接拼装在sql语句中;会有安全问题;

大多情况下,我们去参数的值都应该去使用#{};

原生jdbc不支持占位符的地方我们就可以使用${}进行取值
比如分表、排序。。。;按照年份分表拆分
select * from ${year}_salary where xxx;
select * from tbl_employee order by ${f_name} ${order}

以上是关于#{}, ${}取值区别的主要内容,如果未能解决你的问题,请参考以下文章

mybatis学习$与#号取值区别

#{key}和${key} 取值的区别

proxy和no-proxy的策略取值的区别

position属性有哪4种取值?有何区别?

[mybatis]映射文件_参数处理_#和$取值区别

c++中,float double区别