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

fcg9iug3  于 2023-09-29  发布在  Java
关注(0)|答案(2)|浏览(65)

我想从Jhipster框架中创建一个Distinct查询,因为它不可能使用Spring存储库。
我的主要问题是如何在不创建新的手动连接的情况下连接到DB。我相信一定有办法在我的java类中注入mongoDB连接,但我不知道如何做到这一点。
如果有人能帮忙?
干杯,

ohfgkhjo

ohfgkhjo2#

在JHipster应用程序中,您可以访问MongoDB数据库并执行不同的查询,而无需通过利用Spring Data MongoDB存储库支持创建新的手动连接。JHipster使用Sping 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,并定义适当的端点Map。
通过执行这些步骤,您可以在JHipster应用程序中为MongoDB创建一个不同的查询,而无需手动管理数据库连接。Spring Data MongoDB框架负责处理数据库连接和查询。

相关问题