쿼리 메소드란?
JPA를 이용해서 목록 기능을 구현할 때는 JPQL을 이용하면 된다.
JPQL은 검색 대상이 테이블이 아닌 엔티티이므로 다소 복잡할 수 있다.
쿼리 메소드는 메소드의 이름으로 필요한 쿼리를 만들어주는 기능이다.
find + 엔티티이름 + By + 변수 이름
ex) findBoardByTitle() : Board 엔티티에서 title 변수 값만 조회한다.
엔티티 이름은 생략될 수 있고, 현재 사용하는 Repository 인터페이스에 선언된 타입 정보를 기준으로 자동으로 엔티티 이름이 적용된다.
-게시글 제목으로 목록 조회하는 findByTitle() 메소드를 BoardRespository 인터페이스에 추가
package com.example.chapter05.persistence;
import com.example.chapter05.domain.Board;
import org.springframework.data.repository.CrudRepository;
import java.util.List;
public interface BoardRepository extends CrudRepository<Board, Long> {
List<Board> findByTitle(String searchKeyword); // 게시 글 제목으로 목록을 조회
}
-추가된 메소드를 테스트
package com.example.chapter05.web;
import com.example.chapter05.domain.Board;
import com.example.chapter05.persistence.BoardRepository;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.Date;
import java.util.List;
@SpringBootTest
public class QueryMethodTest {
@Autowired
private BoardRepository boardRepo;
@BeforeEach
public void dataPrepare() {
System.out.println("실행됨");
for (int i = 1; i <= 200; i++) {
Board board = new Board();
board.setTitle("테스트 제목 " + i);
board.setWriter("테스터");
board.setContent("테스트 내용 " + i);
board.setCreateDate(new Date());
board.setCnt(0L);
boardRepo.save(board);
}
}
@Test
public void testFindByTitle(){
List<Board> boardList = boardRepo.findByTitle("테스트 제목 10");
System.out.println("검색 결과");
for (Board board : boardList) {
System.out.println("---> " + board.toString());
}
}
}
'BACK > SPRING' 카테고리의 다른 글
[Spring Boot] Maven 환경에 Swagger 적용하기 (0) | 2022.10.11 |
---|---|
[Spring Boot] Pageable로 페이징 구현하기 (0) | 2022.07.31 |
[Spring JPA] CRUD 기능 테스트하기 (0) | 2022.07.04 |
[Spring] AOP란? 용어 정리, 사용 방법 (1) | 2021.10.18 |
[Spring] Maven 이란? (+POM) (0) | 2021.10.16 |