【问题标题】:How does Java Spring query MongoDB?Java Spring如何查询MongoDB?
【发布时间】:2019-04-07 23:40:05
【问题描述】:

我正在尝试学习如何将我的 Java Spring 应用程序连接到我的 MongoDB 数据库。我正在关注本指南:

https://spring.io/guides/gs/accessing-data-mongodb/

我正在尝试学习“创建简单查询”部分。

package hello;

import java.util.List;

import org.springframework.data.mongodb.repository.MongoRepository;

public interface CustomerRepository extends MongoRepository<Customer, String> {

    public Customer findByFirstName(String firstName);
    public List<Customer> findByLastName(String lastName);

}

他们展示了扩展 MongoRepository 接口和定义某些方法。但是,这些方法不是覆盖,也不是从接口继承的方法。他们似乎没有在任何地方为实际实现实现这些方法,所以我非常困惑这是如何工作的。

"您可以根据需要定义其他查询,只需声明它们的 方法签名。在这种情况下,您添加 findByFirstName,它 本质上是在寻找客户类型的文件并找到一个 匹配名字。”

这里是教程完整代码的存储库:https://github.com/spring-guides/gs-accessing-data-mongodb

我非常困惑如何在界面中定义一个新方法而不自己实现该方法神奇地允许我构造查询...任何人都可以阐明一些?

【问题讨论】:

    标签: java spring mongodb


    【解决方案1】:

    这是一种在 Spring Data JPA 的幕后构建查询的方法。它绝对看起来像魔术,但它是 Spring 隐藏编写查询复杂性的方式。通过从 MongoRepository 扩展,Spring 会根据您在存储库接口中定义的方法名称自动创建查询。

    例如,public Customer findByFirstName(String firstName) 方法大致转换为以下查询(其中$firstNamefirstName 变量)。

    db.Customer.find({firstName : $firstName})
    

    您可以在Spring Data JPA documentation 的查询创建部分中查看可用于通过方法名称创建查询的所有关键字。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-14
      • 2013-09-02
      • 2022-01-04
      • 2019-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多