gpt4 book ai didi

java - 在 Java 中使用 QueryDSL 和 MongoDB 创建复杂查询

转载 作者:可可西里 更新时间:2023-11-01 09:57:09 25 4
gpt4 key购买 nike

我已经按照本教程设置了 MongoDB

http://www.littlelostmanuals.com/2011/09/spring-mongodb-type-safe-queries.html

一切都按预期工作,但现在我陷入了一个我希望能够查询多个字段的点。

目前,我为要保存的每种类型都有存储库接口(interface),并且可以在单个字段上进行搜索。

public interface StartedEventRepository extends 
MongoRepository<DatablockStartedEvent, String>,
QueryDslPredicateExecutor<DatablockStartedEvent> {

}

下面是单个参数的查询。

        return startedEventRepo
.findOne(QDatablockStartedEvent.datablockStartedEvent.searchId
.eq(searchId));

是否可以创建一个查询对象,我可以在其中说出类似于以下内容的内容。

if(someName != null){
query.where(QMyClass.name.eq(someName));
}
if(someTime != null){
query.where(QMyClass.time.eq(someTime));
}

List result = query.list();

我试过查看 MongodbQuery,但我无法让它工作。有任何想法吗?

我看到一个例子http://www.mkyong.com/mongodb/spring-data-mongodb-update-document/但这使用了 mongoTemplate。有没有办法通过存储库实现这一点,如果没有,它们就没用了吗?

最佳答案

应该是可以的。可能是这样的

BooleanBuilder builder = new BooleanBuilder();

if(someName != null){
builder.and(QMyClass.name.eq(someName));
}
if(someTime != null){
builder.and(QMyClass.time.eq(someTime));
}

repository.findAll(builder.getValue())

关于java - 在 Java 中使用 QueryDSL 和 MongoDB 创建复杂查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10802936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com