为了账号安全,请及时绑定邮箱和手机立即绑定

使用SpringMVC + MongoDB时,用or条件匹配关键字时遇到的问题?

/ 猿问

使用SpringMVC + MongoDB时,用or条件匹配关键字时遇到的问题?

智慧大石 2019-06-07 11:06:35

public <T> List<T> queryCommunityByKeyword(String keyword, Integer page, Integer pageSize) {
Query query = new Query();
query.addCriteria(Criteria.where("communityName").regex(keyword)
.orOperator(Criteria.where("announcement").regex(keyword)
.orOperator(Criteria.where("remark").regex(keyword))))
.skip( (page - 1) * pageSize).limit(pageSize);//分页
System.out.println(query);
List<SmsCommunity> list = mongoTemplate.find(query, SmsCommunity.class);
if(list == null || list.size() < 1){
return null;
}
return (List<T>) list;
}
以上是接口的实现代码;
Query: { "communityName" : { "$regex" : "车"} , "$or" : [ { "announcement" : { "$regex" : "车"} , "$or" : [ { "remark" : { "$regex" : "车"}}]}]}, Fields: null, Sort: null
以上是后台打印的查询语句;
我要的效果是(Oracle):
SELECT * FROM tbl_name WHERE communityName LIKE ? OR announcement LIKE ? OR remark LIKE ?
可是上面的mongoTemplate代码查出来的不是这样的,后面两个or的条件直接被忽略了.

下面是我用到的spring整合mongodb的包:
import org.springframework.data.mongodb.core.MongoTemplate;

查看完整描述

2 回答

?
撒科打诨

使用SpringMVC + MongoDB时,用or条件匹配关键字时遇到的问题如下:

在使用SpringMVC框架时,配置web.xml文件时,springDispatcherServlet的配置:

可以看到servlet过滤的是所有的请求url,因此当浏览器在访问css、js、image等静态资源时也需要通过验证是否已经有相关的映射,如果没有则无法访问到(有时可能会觉得是路径配置不对,但是你会发现无论怎么改路径都访问不到),比如你在controller里注解了一个请求的 url,那么你就可以访问到你想获取的资源或者页面,但是静态资源时没有注解的,所以当你在页面上使用css或者引入js文件时就无法访问。

解决方法:

1、添加默认的servlet-mapping :

2、将你所需要访问静态资源添以通配符的形式加到web.xml的servlet-mapping中,就可以轻松地访问到你精心设计的js和css了。



查看完整回答
反对 回复 2019-06-08
?
浮云间

代码如下:
Query query = new Query();
Criteria cr = new Criteria();
query.addCriteria(cr.orOperator(
Criteria.where("communityName").regex(keyword)
,Criteria.where("communityName").regex(keyword)
,Criteria.where("remark").regex(keyword)
));

打印的SQL语句如下:
Query: { "$or" : [ { "communityName" : { "$regex" : "俗"}} , { "communityName" : { "$regex" : "俗"}} , { "remark" : { "$regex" : "俗"}}]}, Fields: null, Sort: null




查看完整回答
反对 回复 2019-06-08

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信