Jhipster/MongoDB 自定义不同查询创建(因为 Spring 存储库不可能)

问题描述 投票:0回答:2

我想从 Jhipster 框架创建一个不同的查询,因为 Spring 存储库不可能实现这一点。

我的主要问题是如何连接到数据库而不创建新的手动连接。我确信一定有一种方法可以在我的 java 类中注入 mongoDB 连接,但我不知道该怎么做。

如果有人可以帮忙?

干杯,

java mongodb connection distinct jhipster
2个回答
0
投票

在 JHipster 应用程序中,您可以利用 Spring Data MongoDB 存储库支持访问 MongoDB 数据库并执行不同的查询,而无需创建新的手动连接。 JHipster 使用 Spring Boot 和 Spring Data 来简化数据库访问。

以下是如何在 JHipster 应用程序中为 MongoDB 创建不同的查询:

创建 MongoDB 实体:

首先,确保您的 JHipster 应用程序中有一个与您要查询的 MongoDB 集合相对应的实体。您可以使用 JHipster 实体生成器来创建此实体。

定义自定义存储库接口:

要执行不同的查询,您可以为 MongoDB 实体定义自定义存储库接口。创建一个扩展 MongoRepository 的新接口,并添加具有不同查询逻辑的自定义方法。例如:

import org.springframework.data.mongodb.repository.MongoRepository;
import java.util.List;

public interface YourEntityRepository extends MongoRepository<YourEntity, String> {
    List<String> findDistinctByFieldName(String fieldName);
}

将 YourEntity 替换为您的 MongoDB 实体的名称,并将 fieldName 替换为您要执行不同查询的字段。

实现自定义查询:

现在,您需要在服务或控制器类中实现自定义查询逻辑。您可以将自定义存储库接口注入到服务或控制器中,然后使用它来执行不同的查询。例如:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;

@Service
public class YourEntityService {
    private final YourEntityRepository yourEntityRepository;

    @Autowired
    public YourEntityService(YourEntityRepository yourEntityRepository) {
        this.yourEntityRepository = yourEntityRepository;
    }

    public List<String> findDistinctFieldValues() {
        return yourEntityRepository.findDistinctByFieldName("fieldName");
    }
}

将 YourEntityService 和 fieldName 替换为您的实际服务类名称和字段名称。

使用控制器中的服务:

最后,如果需要,您可以使用控制器中的服务通过 REST 端点公开不同的查询结果。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;

@RestController
@RequestMapping("/api")
public class YourEntityController {
    private final YourEntityService yourEntityService;

    @Autowired
    public YourEntityController(YourEntityService yourEntityService) {
        this.yourEntityService = yourEntityService;
    }

    @GetMapping("/distinctFieldValues")
    public List<String> getDistinctFieldValues() {
        return yourEntityService.findDistinctFieldValues();
    }
}

将 YourEntityController 替换为您的实际控制器类名称并定义适当的端点映射。

通过执行以下步骤,您可以在 JHipster 应用程序中为 MongoDB 创建不同的查询,而无需手动管理数据库连接。 Spring Data MongoDB 框架负责为您处理数据库连接和查询。


© www.soinside.com 2019 - 2024. All rights reserved.