首先我们先看一下两种形式的写法:
第一种是#{}的形式
<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注入的风险,一般情况下能用#就用#的方式,如果迫不得已只能用$的方式,也要提前做好防注入的措施。