区别:
#{}:以预编译的方式传入,可以防止sql注入
${}:以内容拼接的方式传入,存在sql注入的安全隐患。
举个栗子:
<select id="phoneByIdStr" resultType="Model.PhoneModel" parameterType="String">
select * from test where brand_id=#{id}
</select>
以上可见,#{}参数传入预以编译的方式传入,能有效避免SQL注入。
<select id="phoneByIdStr" resultType="Model.PhoneModel" parameterType="String">
select * from test where brand_id=${id}
</select>
以上可见,传入的参数直接拼接了,存在SQL注入问题。
使用:
一般使用#{},但像传入表名或需要order by 字段排序时候,表名和字段名可以用${}.
<select id="phoneByIdStr" resultType="Model.PhoneModel" parameterType="String">
select * from ${id} where brand_id='1'
</select>