春天如何从该查询的表中获取值

时间:2019-03-03 01:49:19

标签: java spring spring-boot

我不了解春季的查询工作方式。到目前为止,我有此查询,我想在其中基于字符串参数从表中检索值。但是从我的研究来看,为了实现查询注释,我应该将查询注释放在函数之上。但是当尚未实现该子例程时,如何从该子例程中检索该值呢?

我从这里开始

@Repository
public interface PhoneRepository {



@Query("SELECT price FROM phone WHERE model = ?1 AND storage = ?2 AND quality = ?3")
public double devicePrice(String model, String storage, String quality);

} 

我应该如何从这里从表中获取价格值?

public class PhoneImplementation implements PhoneRepository{


    public double devicePrice(String model, String storage, String quality) {

        // return the price value here somehow
    }



}

2 个答案:

答案 0 :(得分:0)

您不需要实现@Repository PhoneRepository。只需使用@Autowired调用控制器或服务上的PhoneRepository,然后使用devicePrice(字符串模型,字符串存储,字符串质量)即可。

我们服务中的示例:

@Autowired
private PhoneRepository phoneRepository;

public double yourMethod(String model, String storage, String quality) {
    return this.phoneRepository.devicePrice(String model, String storage, String quality);
}

答案 1 :(得分:0)

@Transactional
@Query(value="SELECT price FROM phone WHERE model = ?1 AND storage = ?2 AND quality = ?3",nativeQuery=true)
public double devicePrice(String model, String storage, String quality);

在使用Spring Boot时,您可以使用JpaRepository<T, ID>扩展存储库,如下所示

public interface PhoneRepository extends JpaRepository<Phone, ID>

这里电话是您的实体,ID是您实体中主键的一种。 Jpa使编写自定义查询变得容易,而无需在存储库中编写。


JpaRepository已经具有以下方法

    List<T> findAll();
    List<T> findAll(Sort sort);
    List<T> findAllById(Iterable<ID> ids);
    <S extends T> List<S> saveAll(Iterable<S> entities);
    <S extends T> S saveAndFlush(S entity);
    void deleteAllInBatch();
    <S extends T> List<S> findAll(Example<S> example);

即使您可以根据参考字段来编写查询。

.findByLastnameAndFirstname (… where x.lastname = ?1 and x.firstname = ?2)

您请参考Doc 1 Que 1