${}和#{}的区别

2018-10-25  本文已影响0人  熊猫的雄

${} 注入什么就是什么,且如果是简单类型的值需要用 value 来接收
#{} 将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号

例如

Animal animal = mapper.findCarById("大熊猫");
通过执行上述代码给 xml 中的 findCarById 方法注入参数实现下面sql语句的拼接

SELECT * FROM animal WHERE name = "大熊猫"

使用${}

<select id="findAnimal rById" parameterType="java.lang.String" resultType="com.hello.pojo.Animal ">
        SELECT * FROM animal WHERE name = "${value}"
</select>

使用#{}

<select id="findAnimal rById" parameterType="java.lang.String" resultType="com.hello.pojo.Animal ">
        SELECT * FROM animal WHERE name = #{name}
</select>

#方式能够很大程度防止sql注入;$方式无法防止Sql注入。
$方式一般用于传入数据库对象,例如传入表名。
一般能用#的就别用$。MyBatis排序时使用order by 动态参数时需要注意,用$而不是#。

上一篇 下一篇

猜你喜欢

热点阅读