@Query("select m from Member m where m.username in :names")
List<Member> findByUsername(@Param("names") List<String> names);
@Query("select m from Member m where m.username in :names")
List<Member> findByUsername(@Param("names") Collection<String> names);
Collection으로 파라미터를 받으면
하위의 다양한 collection들을 받을 수 있다.
@Test
public void findNames() {
Member m1 = new Member("AAA", 10);
Member m2 = new Member("BBB", 20);
memberRepository.save(m1);
memberRepository.save(m2);
List<String> strings = new ArrayList<>();
strings.add(m1.getUsername());
strings.add(m2.getUsername());
List<Member> result = memberRepository.findByUsername(strings);
for (MemberDto dto : memberDto) {
System.out.println("dto = " + dto);
}
}
query파리미터에 여러 값으로 넣고 싶을 때가 있는데 그때 컬렉션으로 넣을 수 있다.
✔ 참고로 new ArrayList<>();코드들을 밑에 코드 한줄로 간단하게 작성 할 수도 있다!
List<String> strings = new ArrayList<>();
strings.add(m1.getUsername());
strings.add(m2.getUsername());
List<Member> result = memberRepository.findByUsername(strings);
↓
List<Member> result = memberRepository.findByUsername(Arrays.asList("AAA","BBB"));