Spring数据为mongodb的CRUD,分页和排序提供了各种存储库 . 当我们需要使用各种属性的mongodb文档时,我们倾向于编写 findBy
方法或编写一个带有 @Query 注释的显式查询的方法 . 但是,如果我的文档有很多属性,并且我需要各种方法来获取文档,那么spring是否会提供"repository method",其中包含属性和值的映射?写各种 findBy
可能很麻烦 . 使用QueryDSL似乎是一个选项,但需要代码生成和build.gradle更改 . 如果基于 Map 的解决方案不可用,我可以使用QueryDSL .
例如:
class FooDocument {
String id ;//mongodb ObjectId
String name
String version
boolean deleteIndicator
... any more attributes
}
在存储库上需要一个方法
List<FooDocument> findByMap ( Map attrValMap );
调用方法(groovy)
repository.findByMap ( [ "name" : "fooname", "version" : "1.0" ] )
repository.findByMap ( [ "name" : "fooname"] )
repository.findByMap ( [ "version" : "1.0", "deleteIndicator" : false] )
我愿意使用MongoOperations接口使用 Criteria/Query
组合或 BasicDBObject
基于fetch来编写此方法,以防Spring数据提供开箱即用的功能 .
1 回答
为了得到你需要的东西,你可以通过以下方式使用它: