今天作了一个小Demo关于like的写法,记录一下.sql
直接写 xxx like '%#{xxx}%' 是会报错的,由于没有找到对应占位符却插入属性值.排序
故能够按照一下几种方式写:编译
1. xxx like "%"#{xxx}"%"sql语句
2. xxx lile CONCAT(CONCAT('%',#{xxx}),'%') 或者 xxx lile CONCAT(CONCAT('%',${xxx}),'%')注入
3. xxx like CONCAT('%',#{xxx},'%') 或者 xxx like CONCAT('%',${xxx},'%')
4. xxx like '%${xxx}%’
建议用#,而不用$.缘由在于$直接认为是sql语句,即直接拼接进去.
而#则是预编译,首先能够防止SQL注入,其次动态SQL,进行预编译,是JDBC中PreparedStatement来作.
固然$不是彻底无用处,在order by排序时,须要用$.