Learn & Record

Spring Boot ( 본문

Dev/Spring

Spring Boot (

Walker_ 2024. 5. 14. 09:27

1. 쿼리 메서드 Query Methods 기능과 @Query

 - 쿼리메서드 : 메서드의 이름 자체가 쿼리의 구문으로 처리되는 기능

 - @Query : SQL과 유사하게 엔티티 클래스의 정보를 이용해서 쿼리 JPQL를 작성하는 기능

 - Querydsl 등의 동적 쿼리 기능

 

 2. 쿼리메서드

 - 쿼리 메서드는 주로 'findBy'나 'getBy...'로 시작하고 이후에 필요한 필드 조건이나 And, Or와 같은 키워드를 이용해서

 - 메서드의 이름 자체로 질의 조건을 만들어 냄

https://docs.spring.io/spring-data/jpa/reference/#jpa.query-methods.query-creation

 

Spring Data JPA :: Spring Data JPA

Oliver Gierke, Thomas Darimont, Christoph Strobl, Mark Paluch, Jay Bryant, Greg Turnquist Copies of this document may be made for your own use and for distribution to others, provided that you do not charge any fee for such copies and further provided that

docs.spring.io

 - 자세한 내용 위 링크에서 확인 가능

 - Between 같은 경우 문서에서 위와 같이 설명

 

package com.example.spring_boot_project_02.repository;

import com.example.spring_boot_project_02.entity.Memo;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

public interface MemoRepository extends JpaRepository<Memo, Long> {
    List<Memo> findByMnoBetweenOrderByMnoDesc(Long from, Long to);
}

 - MemoRepository 인터페이스 파일에 위 코드 작성

 

@Test
public void testQueryMethod() {
    List<Memo> list = memoRepository.findByMnoBetweenOrderByMnoDesc(70L, 80L);
    for (Memo memo : list) {
        log.info(memo);
    }
}

 - Test 파일에 위 코드 작성

 

3. 쿼리 메서드와 Pageable의 결합

package com.example.spring_boot_project_02.repository;

import com.example.spring_boot_project_02.entity.Memo;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

public interface MemoRepository extends JpaRepository<Memo, Long> {
    List<Memo> findByMnoBetweenOrderByMnoDesc(Long from, Long to);
    Page<Memo> findByMnoBetween(Long from, Long to, Pageable pageable);
}

 - MemoRepositoty에 위 코드 추가