当前端传过来的参数为 如 name ="%" mysql模糊查询会查所有,怎么解决这个问题呢就是通过转义%让mysql不当成特殊字符%,转义为"%";
/**
* decode参数
* @param name
* @return
* @throws UnsupportedEncodingException
*/
private String decodeParamName(String name) throws UnsupportedEncodingException {
name = URLDecoder.decode(name, "UTF-8");
if(StringUtils.isNotEmpty(name) && name.contains("%")){
name = name.replaceAll("%","\\\\%");
}
return name ;
}
sql是这样的
<if test="name!=null and name!=''">
and sd.name like concat('%',#{name},'%')
</if>
这样就可以模糊查询带有%的数据了