MyBatis中 #{} 和 ${}的区别
Posted jumpkin1122
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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。
以上是关于MyBatis中 #{} 和 ${}的区别的主要内容,如果未能解决你的问题,请参考以下文章
MyBatis中resultMap=“Map”和resultType=“Map”区别