我想从 Jhipster 框架创建一个不同的查询,因为 Spring 存储库不可能实现这一点。
我的主要问题是如何连接到数据库而不创建新的手动连接。我确信一定有一种方法可以在我的 java 类中注入 mongoDB 连接,但我不知道该怎么做。
如果有人可以帮忙?
干杯,
在 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 框架负责为您处理数据库连接和查询。
使用此内容在 jhipster 中进行研究查询...
http://docs.spring.io/spring-data/data-commons/docs/1.6.1.RELEASE/reference/html/repositories.html