我需要编写一个应用程序,用它我可以使用spring数据和MongoDB进行复杂的查询。我开始使用MongoRepository,但在复杂的查询中很难找到示例或真正理解语法。
我说的是这样的问题:
@Repository
public interface UserRepositoryInterface extends MongoRepository<User, String> {
List<User> findByEmailOrLastName(String email, String lastName);
}
或者使用基于JSON的查询,因为语法不对,所以我试了一遍又一遍。即使在阅读了mongodb文档之后(由于语法错误,不工作的示例)。
@Repository
public interface UserRepositoryInterface extends MongoRepository<User, String> {
@Query("'$or':[{'firstName':{'$regex':?0,'$options':'i'}},{'lastName':{'$regex':?0,'$options':'i'}}]")
List<User> findByEmailOrFirstnameOrLastnameLike(String searchText);
}
在通读了所有文档之后,似乎MongoTemplate
的文档要比MongoRepository
好得多。我指的是以下文档:
http://static.springsource.org/spring-data/data-mongodb/docs/current/reference/html/
你能告诉我用什么更方便更强大吗?MongoTemplate
还是MongoRepository
?是两个都一样成熟,还是其中一个比另一个缺少更多的特征?
“方便”和“功能强大”在某种程度上是矛盾的目标。存储库要比模板方便得多,但模板当然为您提供了对执行内容的更细粒度的控制。
由于存储库编程模型可用于多个spring数据模块,您将在spring数据MongoDB参考文档的general部分找到关于它的更深入的文档。
DR
我们一般建议采用以下方法:
MongoTemplate
.详细信息
在您的示例中,它看起来如下所示:
>
为自定义代码定义接口:
interface CustomUserRepository {
List<User> yourCustomMethod();
}
为这个类添加一个实现,并遵循命名约定,以确保我们可以找到这个类。
class UserRepositoryImpl implements CustomUserRepository {
private final MongoOperations operations;
@Autowired
public UserRepositoryImpl(MongoOperations operations) {
Assert.notNull(operations, "MongoOperations must not be null!");
this.operations = operations;
}
public List<User> yourCustomMethod() {
// custom implementation here
}
}
现在,让您的基本存储库接口扩展自定义存储库接口,基础结构将自动使用您的自定义实现:
interface UserRepository extends CrudRepository<User, Long>, CustomUserRepository {
}
通过这种方式,您基本上可以选择:所有易于声明的内容都放入userrepository
中,所有更好地手动实现的内容都放入customuserrepository
中。此处记录了自定义选项。
问题内容: 我需要编写一个应用程序,可以使用spring-data和mongodb进行复杂的查询。我一直从使用MongoRepository开始,但是在复杂的查询中苦苦寻找实例或真正理解语法。 我说的是这样的查询: 或使用基于JSON的查询,但由于语法不正确,因此尝试并尝试了它。即使在阅读了文档之后(由于语法错误,仍无法正常工作的示例)。 阅读完所有文档后,似乎mongoTemplate文档要好得
Hibernate和Spring数据JPA之间的主要区别是什么? 我们什么时候不应该使用Hibernate或Spring数据JPA? 此外,何时SpringJDBC模板可以比Hibernate和SpringDataJPA性能更好?
本文向大家介绍Spring Boot、Spring MVC 和 Spring 有什么区别?相关面试题,主要包含被问及Spring Boot、Spring MVC 和 Spring 有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 SpringFramework SpringFramework 最重要的特征是依赖注入。所有 SpringModules 不是依赖注入就是 IOC 控制反转。 当我
本文向大家介绍Dubbo 和 Spring Cloud 有什么区别?相关面试题,主要包含被问及Dubbo 和 Spring Cloud 有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 两个没关联,如果硬要说区别,有以下几点。 1)通信方式不同 Dubbo 使用的是 RPC 通信,而 Spring Cloud 使用的是 HTTP RESTFul 方式。 2)组成部分不同 最大的区别:Dubb
给出了以下配置: 我需要一个存储库来访问电影,看起来有点像这样: 是否有一种注释驱动的方法来告诉存储库要使用哪个模板?如果没有,还能做些什么来解决这个问题?