java使用mybatis模糊查询的时候,避免使用%和_查出全部数据

模糊查询的时候,通常我们会把筛选的条件,如filter为筛选的条件,两边加上两个%放入sql查询,如下所示:

String filterStr = StringUtils.isBlank(filter) ? null : "%" + filter + "%"

这样的话如果用户输入一个%,sql的样子如下,会查出所有数据:

select * from user where name like "%%%"

这时候需要对%和_进行转义,代码如下:

public String queryReplace(String filter){
       return StringUtils.isBlank(filter) ? null : "%" + filter.replace("\\", "\\\\")
               .replace("%","\\"+"%")
               .replace("_","\\"+"_")
               .replace("'","\\"+"'")
               .replace("\"","\\"+"\"") + "%";
    }
posted @ 2021-11-26 16:47  小斯林  阅读(867)  评论(0编辑  收藏  举报