1、<select id="findSKUName" parameterType="java.lang.String" resultType="java.lang.String">
select skuName from sku where skuName like concat('%',#{skuName},'%')
</select>
2、<select id="findSKUName" parameterType="java.lang.String" resultType="java.lang.String">
select skuName from sku where skuName like concat('%','${skuName}','%')
</select>
请仔细看第一种和第二种的区别,一个使用的#不到单引号,另一个使用美元符号带有单引号,本人更加推荐第一种,这个要追溯到#和$的区别:
#{ }是预编译处理,MyBatis在处理#{ }时,它会将sql中的#{ }替换为?,然后调用PreparedStatement的set方法来赋值,传入字符串后,会在值两边加上单引号,使用占位符的方式提高效率,可以防止sql注入。
${}:表示拼接sql串,将接收到参数的内容不加任何修饰拼接在sql中,可能引发sql注入。
总结:主要时防止sql注入问题