SpringBootクエリーメソッド機能と@Query
8152 ワード
クエリーメソッド機能とJava Persistence Query Languageは、JpaRepositoryが提供するオブジェクト向けクエリーの機能です.複数の検索条件が必要な場合に使用できます.
メソッド名自体をクエリー構文と見なす機能
主に「findBy」「getBy」で始まる
たとえば、70~80のオブジェクトを取得し、mnoの逆順序でソートする場合は、次の操作を行います.
pageableと一緒に処理しますか?
SQLと同様に、エンティティークラスの情報を使用してクエリーを作成する機能
通常はクエリメソッドのみを使用して単純な処理を行い,@Queryを使用する.
@QueryのvalueはJPQLによって記述され、通常は「オブジェクト向けクエリー」と呼ばれます.
countQueryを使用してPageableタイプのパラメータを渡すとよい.
複雑なJOIN文などを扱うために使わざるを得ない場合.
NativeQueryプロパティ値trueを指定し、通常のSQLを使用できます.
クエリー方法
メソッド名自体をクエリー構文と見なす機能
主に「findBy」「getBy」で始まる
たとえば、70~80のオブジェクトを取得し、mnoの逆順序でソートする場合は、次の操作を行います.
MemoRepository
//엔티티의 타입정보와 @id타입 지정하기
public interface MemoRepository extends JpaRepository<Memo,Long> {
List<Memo> findByMnoBetweenOrderByMnoDesc(Long from,Long to);
}
MemoRepositoryTests
@Test
public void testQueryMethods(){
List<Memo> list = memoRepository.findByMnoBetweenOrderByMnoDesc(70L,80L);
for (Memo memo : list){
System.out.println(memo);
}
}
テスト結果
MemoRepository
//엔티티의 타입정보와 @id타입 지정하기
public interface MemoRepository extends JpaRepository<Memo,Long> {
Page<Memo> findByMnoBetween(Long from, Long to, Pageable pageable);
}
MemoRepositoryTests
@Test
public void testQueryMethodWithPageable(){
Pageable pageable = PageRequest.of(0,10,Sort.by("mno").descending());
Page<Memo> result = memoRepository.findByMnoBetween(10L,50L,pageable);
result.get().forEach(memo -> System.out.println(memo));
}
テスト結果
@Query
SQLと同様に、エンティティークラスの情報を使用してクエリーを作成する機能
通常はクエリメソッドのみを使用して単純な処理を行い,@Queryを使用する.
@QueryのvalueはJPQLによって記述され、通常は「オブジェクト向けクエリー」と呼ばれます.
@Query(value = "select m from Memo m where m.mno> :mno",
countQuery = "select count(m) from Memo m WHERE m.mno > :mno")
Page<エンティティ>として指定する場合は、countを計算できるクエリーが必要です.countQueryを使用してPageableタイプのパラメータを渡すとよい.
@Query(value = "select * from memo where mno> 0", nativeQuery = true)
@Queryの強力な機能は、データベース固有のSQL構文を利用することができます.複雑なJOIN文などを扱うために使わざるを得ない場合.
NativeQueryプロパティ値trueを指定し、通常のSQLを使用できます.
Reference
この問題について(SpringBootクエリーメソッド機能と@Query), 我々は、より多くの情報をここで見つけました https://velog.io/@dlsdk2526/스프링부트-쿼리메서드Query-Methods기능과-Queryテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol