首页 > 解决方案 > Spring MVC中如何使用getById方法获取对应的名字?

问题描述

我正在学习 Spring MVC,我想通过 an 找到一辆车,id但作为回报name

在我的服务类中,我调用了一个通用方法getXXXById。这是 JPA 天生赋予我的东西。

我知道我得到了整个实体,但我怎样才能收到对应nameid.

示例:我打电话getCarById(2)给我Tesla

我的表:

id | Name 
----------
1  | Ford      
2  | Tesla

我的服务:

class CarService {

// code ...

public Optional<CarEntity> getCarById(int id) {
    return carRepository.findById(id);
}

标签: javaspringspring-mvcspring-data-jpa

解决方案


有两种选择可以做到这一点。

进行自己的查询

您可以在 JQPL 中编写自己的查询来仅检索名称。

例如,您可以在存储库中创建类似的方法。

@Query("select t.name from CarEntity where id = ?1")
public String findNameById(Integer id);

有关 Spring Data Jpa 的此功能的更多信息HERE

预测

第二种选择是进行投影。正如文档中所写

Spring Data 查询方法通常返回由存储库管理的聚合根的一个或多个实例。但是,有时可能更希望对这些类型的某些属性进行投影。Spring Data 允许对专用返回类型进行建模,以更有选择性地将部分视图检索到托管聚合上。

简而言之,它允许您将结果表单查询聚合到一些有限的属性集而不是整个实体中。

专门针对您的需求,我建议使用第一种方法,但两者都值得了解。


推荐阅读