MyBatis中 #{} 和 ${}的区别

#{}:如果传入的是字符串,则会将其中的值作为字符串拼接sql上。 安全

${}:如果传入的是字符串,则不会作为字符串,而是直接拼接到sql上。不安全

条件名:name = "age"
select
* from user order by #{name}; --> select * from user order by 'age'; select * from user order by ${name}; --> select * from user order by age;

#{}和${}

#{}表示一个占位符号,通过#{}可以实现preparedStatement向占位符中设置值,自动进行java数据类型和jdbc类型转换,#{}可以有效的防止sql注入。可以接收基本类型值或类对象(user)。如果parameterType传输单个基本类型值,#{}括号中可以是value或其他名称。自动识别。

${}表示拼接sql串,通过${}可以将parameterType传入的内容拼接在sql中且不进行jdbc类型转换,${}可以接收简单类型值或对象类对象(user)属性值,如果parameterType传输单个基本类型值,${}括号中只能是value。

原文地址:https://www.cnblogs.com/jumpkin1122/p/11603001.html