首页 > 技术专区 > Mybatis > Mybatis中传值#{}和${}符号的区别 屏幕太窄?试试伸展一下吧 >

Mybatis中传值#{}和${}符号的区别

首先我们先看一下两种形式的写法:

第一种是#{}的形式

<select id="selectSchoolById" parameterType="java.util.Map" resultMap="SchoolMap">
    select * from school where id = #{username}
</select>

第二种是${}的形式

<select id="selectSchoolById" parameterType="java.util.Map" resultMap="SchoolMap">
    select * from school where id = ${username}
</select>

#{}将传入的数据当做一个字符串,代入到sql中是

select * from school where id = '10'

相当于自动添加了''号。

${}相当于将传入的数据直接代入sql,相当于

select * from school where id = 10

这就表明,#能极大程度的避免sql注入,而$则会有sql注入的风险,一般情况下能用#就用#的方式,如果迫不得已只能用$的方式,也要提前做好防注入的措施。