Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaSpring如何查询MongoDB?_Java_Spring_Mongodb - Fatal编程技术网

JavaSpring如何查询MongoDB?

JavaSpring如何查询MongoDB?,java,spring,mongodb,Java,Spring,Mongodb,我正在尝试学习如何将我的JavaSpring应用程序连接到我的MongoDB数据库。我遵循以下指南: 我试图学习“创建简单查询”部分 package hello; import java.util.List; import org.springframework.data.mongodb.repository.MongoRepository; public interface CustomerRepository extends MongoRepository<Customer,

我正在尝试学习如何将我的JavaSpring应用程序连接到我的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);

}
包你好;
导入java.util.List;
导入org.springframework.data.mongodb.repository.MongoRepository;
公共接口CustomerRepository扩展了MongoRepository{
公共客户findByFirstName(字符串名);
公共列表findByLastName(字符串lastName);
}
它们展示了如何扩展MongoRepository接口和定义某些方法。但是,这些方法不是重写,也不是从接口继承的方法。看起来他们并没有在任何地方为实际实现实现这些方法,所以我非常困惑这是如何工作的

“您可以根据需要定义其他查询,只需声明它们的 方法签名。在本例中,添加findByFirstName 本质上是寻找Customer类型的文档并找到 与名字匹配。“

以下是教程完整代码的存储库:


我非常困惑,在接口中定义一个新方法而不亲自实现该方法如何神奇地允许我构造查询……任何人都可以解释一下?

这是一种在Spring Data JPA后台实现的构造查询的方法。这看起来确实很神奇,但这是Spring隐藏编写查询复杂性的方法。通过从
MongoRepository
扩展,Spring会根据您在存储库界面中定义的方法名称自动创建查询

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

在的“查询创建”部分中,您可以看到通过方法名称创建查询时可以使用的所有关键字

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