1,#会为里面的参数添加””,即变成字符串;但$不会,而是保留原始的状态。
i
= 1
#
{i
} ==>”
1”
$
{i
} ==>1
2, 因此使用 # 可以很大一部分防止sql注入,如果传入参数建议用 # ,但如果拼接sql的关键字用$ 。
sql注入: 用户恶意的输入sql语句当做输入参数,以此欺骗服务器达到某种不可告人的目的。 解决办法: 输入参数,明确参数类型; 不要直接拼接字符串; 对输入内容过滤;
附:mybatis中模糊查询的使用
1,contact(‘%’, #{search}, ‘%’) //如果 search = null, 那么 ‘%null%’
2, ‘%${search}%’ //如果search为null,那么”%%”
如果search = test,这两种方式拼接出的都是 ‘%test%’