본문 바로가기
백엔드/JPA

스프링 데이터 JPA 복잡한 정적 쿼리 @Query

by 김어찐 2021. 10. 22.
728x90

@Query 어노테이션 사용

장점 : 컴파일시 문법오류 체크

package com.study.datajpa.repository;

import com.study.datajpa.entity.Member;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.List;

public interface MemberRepository extends JpaRepository<Member, Long> {
    List<Member> findByUsername(String username);

    List<Member> findByUsernameAndAgeGreaterThan(String username, int age);

    @Query("select m from Member m where m.username = :username and m.age = :age")
    List<Member> findUser(@Param("username") String username, @Param("age") int age);
}

DTO에 데이터 저장 조회

패키지 경로 다 적어줘야한다

    @Query("select new com.study.datajpa.dto.MemberDto(m.id,m.username,t.name) from Member m join m.team t")
    List<MemberDto> findMemberDto();

 

컬랙션 in 절

컬렉션을 한번에 조회 가능하다

    @Query("select m from Member m where m.username in :names ")
    List<Member>findByNames(@Param("names") Collection<String> name);
728x90

'백엔드 > JPA' 카테고리의 다른 글

스프링 데이터 jpa 벌크 쿼리  (0) 2021.10.23
스프링 data jpa 페이징  (0) 2021.10.23
스프링 데이터 JPA 기초  (0) 2021.10.22
JPA 조인  (0) 2021.10.19
Rest API 개발시 양뱡향 연관관계 주의할 점  (0) 2021.10.18