JPA通过特殊字符%和_可以查询出全部数据的解决方法
做项目过程中遇到通过%和_进行模糊查询时,可以查出全部数据,解决方法如下:
if (Strings.isNotBlank(deviceRelatedParam.getTerminalName())){
String terminalName = deviceRelatedParam.getTerminalName();
//判断字符串里是否包含%和_
if(terminalName.contains("_") || terminalName.contains("%")){
terminalName = terminalName.replace("\\","\\\\").replace("_","\\_").replace("%","\\%");
predicateList.add(criteriaBuilder.and(criteriaBuilder.like(root.get("terminalName"),
"%" + terminalName + "%",'\\')));
}else{
predicateList.add(criteriaBuilder.and(criteriaBuilder.like(root.get("terminalName"),
"%" + terminalName + "%")));
}
}