今天作了一個小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排序時,須要用$.