MyBatis解决模糊查询包含特殊字符问题

MyBatis解决模糊查询包含特殊字符

第一块:MyBatis 实现模糊查询方式

1.1  sql中字符串拼接

SELECT * FROM 表名 WHERE 字段名 LIKE CONCAT(CONCAT('%', #{参数}), '%');

1 2. 使用 ${...} 代替 #{...}

SELECT * FROM 表名 WHERE 字段名 LIKE '%${参数}%'; 

注意:($不能防止sql注入, #{}---> 可以防止sql注入的问题)

1.3 程序中拼接

Java 代码

String searchText = new StringBuilder("%").append(text).append("%").toString(); 
parameterMap.put("text", searchText);

Mapper 映射文件

SELECT * FROM 表名 WHERE 字段名 LIKE #{参数};

第二块:MyBatis 实现特殊字符处理之

2.1 简介

它的全称为character data,以"" 结束,在两者之间嵌入不想被解析程序解析的原始数据,解析器不对CDATA区中的内容进行解析,而是将这些数据原封不动地交给下游程序处理。

2.2 MyBatis 自动转义特殊字符表

特殊字符 替代符号
& &
< <
> >
" "
' '

2.3 特殊字符

xml 中表示:   <= 小于等于、    >= 大于等于 需加  这样的标记:          xml中有&的符号,需要

  • 这样表示&
  • <= 小于等于 :
  • >= 大于等于:=  ]]>

第三块:模糊查询包含特殊字符

解决办法:使用 ${...} +

模板: