1. 시작하기 전
두 메서드 모두 JpaRepository 인터페이스에서 제공하는 메서드입니다.
메서드명 | 설명 |
findBy[컬럼명] | 엔티티의 특정 컬럼 값을 이용하여 조회하는 메서드 |
findBy[컬럼명]Containing | 지정한 문자열이 포함된 엔티티를 조회하는 메서드 |
만약 name 컬럼에서 값이 '홍길동' 인 것을 찾을 때는 findByName 을 사용하시면 되고,
name 컬럼에서 성이 '홍'인 사람들만 찾을 때는 findByNameContaining 을 사용하시면 됩니다.
2. 구현 (+페이징 처리)
예시 : 검색어(String keyword) 를 컬럼에서 조회하고자 한다.
Repository 부분
public interface ExRepository extends JpaRepository<테이블명, 테이블 PK 타입> {
Page<테이블명> findBy컬럼명Containing(String keyword, Pageable pageable);
}
페이징 처리가 포함된 코드입니다.
검색기능을 구현하는 코드이기 때문에 String keyword 로 받고자 합니다. 변수명 또는 타입은 맞게 변경하시면 됩니다.
Service 부분
public interface ExService {
public Page<테이블명> findBy컬럼명Containing(String keyword, Pageable pageable);
}
ServiceImpl 부분
@Service
public class ExServiceImpl implements ExService{
@Autowired
private ExRepository exRepository;
@Override
public Page<테이블명> findBy컬럼명Containing (String keyword, Pageable pageable){
return exRepository.findBy컬럼명Containing(keyword, pageable);
}
}
Controller 부분
@Slf4j
public class ExController {
private final ExService exService;
@GetMapping("/board")
public String board(@RequestParam String keyword, Pageable pageable) {
Page<테이블명> exPage = null;
테이블 선언 (ex : Storage storage);
if(keyword.isEmpty()){
검색 안할 때 로직
} else {
exPage = exService.findBy컬럼명Containing(keyword, pageable);
log.info("검색하여 불러오는 리스트 확인 = {}", exPage.getContent());
}
List<Object> list = new ArrayList<>();
Gson gson = new Gson();
String pageGson = gson.toJson(exPage);
log.info("Gson 변환 후 확인 = {}", pageGson);
return pageGson;
}
여기까지 했을 때 페이징 처리까지 되며 페이징 처리는 기본적으로 1 페이지를 조회하고 페이지 크기는 20으로 설정됩니다.
'ORM > JPA' 카테고리의 다른 글
[JPA] 복합키 적용해서 테이블 생성하기 @EmbeddedId, @IdClass (0) | 2023.02.24 |
---|---|
[JPA] JPA For queries with named parameters 오류 해결 (0) | 2023.02.20 |