1)、#和$符号的差异:
#{}:相当于JDBC中的PreparedStatement
${}:相当于JDBC中的Statement,使用字符串拼接的形式
简单说,#{}是经过预编译的,是安全的;${}是未经过预编译的,仅仅是取变量的值,是非安全的,存在SQL注入。使用时尽量使用#{},不得已使用${}则相应对输入值进行必要的校验,防止sql注入。
2)、使用like进行模糊查询
like查询也可能出现漏洞,比较安全的写法如下:
mysql写法:select * from table where content like concat('%', #{content}, '%')
oracle写法: select * from table where content like '%' || #{content} || '%'
SQLServer: select * from table where content like '%' + #{content} + '%'