파라미터 바인딩에는 위치 기반과 이름 기반이 있습니다.
select m from Member m where m.username = ?0 //위치 기반
select m from Member m where m.username = ?0 //위치 기반
하지만 위치 기반은 거의 사용하지 않습니다.
그냥 이름 기반을 사용합시다. 코드 가독성이나 유지 보수를 위해서 가급적이면 이름 기반을 사용해야 합니다.
위치 기반은 위치가 바뀌는 순간 버그가 생길 수 있습니다.
import org.springframework.data.repository.query.Param
public interface MemberRepository extends JpaRepository<Member, Long> {
@Query("select m from Member m where m.username = :name")
Member findMembers(@Param("name") String username);
}
import org.springframework.data.repository.query.Param
public interface MemberRepository extends JpaRepository<Member, Long> {
@Query("select m from Member m where m.username in :names")
List<Member> findByNames(@Param("names") List<String> names);
}