模糊查询
Select * from news where title like ‘%#{title}%’
在这种情况下使用#程序会报错,新手程序员就把#号改成了$,这样如果java代码层面没有对用户输入的内容做处理势必会产生SQL注入漏洞。
正确写法:
<if test=” userName != null and userName ! = ””>
select * from news where tile like concat(‘%’,#{title}, ‘%’)
或者用标签bind:
<bind name="bindTitle" value="'%'+title+'%'"/>
select * from news where tile like #{bindTitle}
concat标签,在mysql中,可以拼接多个字符,但是如果有一天,你的数据库突然变成了oracle,concat就会报错了,因为它只能接受两个参数。这个时候用bind就比较好了。