【发布时间】:2014-04-02 11:52:31
【问题描述】:
Spring data 为 mongodb 的 CRUD、分页和排序提供了各种存储库。
当我们需要使用各种属性的 mongodb 文档时,我们倾向于编写 findBy 方法或编写带有 @Query 注释的显式查询的方法。
但是,如果我的文档有很多属性并且我需要各种获取文档的方法,那么 Spring 是否提供了一个“存储库方法”,它接收属性和值的 Map?
写各种findBy可能比较麻烦。使用QueryDSL 似乎是一种选择,但需要代码生成和 build.gradle 更改。如果基于地图的解决方案不可用,我可以使用 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] )
我愿意使用 Criteria/Query 组合或使用 MongoOperations 接口基于 BasicDBObject 的提取来编写此方法,以防 Spring Data 不提供开箱即用的功能。
【问题讨论】:
标签: spring-data spring-data-mongodb