if (StrUtil.isNotBlank(queryCondition.getServiceCode())) { query.addCriteria(Criteria.where(SERVICECODE) .regex(Pattern.compile("^" + queryCondition.getServiceCode() + "$", Pattern.CASE_INSENSITIVE)) .regex(".*" + queryCondition.getServiceCode() + ".*")); } 这里忽略大小写,模糊查询不生效,什么原因
时间: 2024-03-01 13:51:46 浏览: 74
现代化个人博客系统 ModStartBlog v7.4.0 暗黑模式跟随系统,随机博客获取
可能是因为正则表达式的写法有误。"^" 表示匹配字符串的开头,"$" 表示匹配字符串的结尾,这里使用了 "^" 和 "$" 来确保只匹配与查询条件完全相等的字符串,而没有使用 ".*" 来表示匹配任意字符,所以模糊查询不生效。你可以尝试将正则表达式修改为 ".*" + queryCondition.getServiceCode() + ".*",这样就可以匹配包含查询条件的任意字符串了。另外,为了忽略大小写,你可以在正则表达式前面加上 "(?i)",这样就会忽略大小写了。修改后的代码如下:
```
if (StrUtil.isNotBlank(queryCondition.getServiceCode())) {
query.addCriteria(Criteria.where(SERVICECODE)
.regex("(?i).*" + queryCondition.getServiceCode() + ".*"));
}
```
希望对你有帮助。
阅读全文