小编典典

使用@Query从SPRING BOOT中的文件获取查询

java

我有一个proyect用于加载查询:

@Query(value = SELECT_BY_USER_ID, nativeQuery = true)
Employee findByUserId(@Param("userId") String userId);

在“ SELECT_BY_USER_ID”上是正常的字符串查询。

我在jar外部有一个YML配置,用于加载不同的配置,并且我也想使用此YML来加载查询。

示例YML:

file:
    query1: SELECT * FROM DUAL;

但是我不知道如何直接从@Query值中的文件中加载,我试图这样做:

@Query(value = ("${file.query1}"), nativeQuery = true)
List<Employee> findByCost();

我能怎么做?谢谢。


阅读 303

收藏
2020-11-30

共1个答案

小编典典

如果您需要从资源文件夹中加载SQL,可以尝试使用spring-data-
sqlfile
库。它支持从资源加载SQL查询。因此,您只需要将SQL查询放入资源文件夹中,然后就可以在SqlFromResource批注中引用它们:

@Repository
public interface UserRepository extends JpaRepository<User, Integer> {
    @SqlFromResource(path = "select_user_by_id.sql")
    User findById(int userId);
}

输出将如下所示:

@Repository
public interface UserRepositoryGenerated extends JpaRepository<User, Integer> {    
  @Query(
      value = "SELECT *     FROM users     WHERE id = :userId",
      nativeQuery = true
  )
  User findById(int userId);
}
2020-11-30