- 네모 박스가 JPQL 부분
List<Member> result = em.createQuery(
"select m from Member m where m.username like '%kim%' ",
Member.class).getResultList();
for( Member member : result ) {
System.out.println("member = " + member);
}
select
select절 항목
from절
where절
group by절
having절
order by절
update
update절
where절
delete
delete절
where절
m => alias
count(m) // 회원수
sum(m.age) // 나이의 합
avg(m.age) // 평균 나이
max(m.age) // 최대 나이
min(m.age) // 최소 나이
TypedQuery<Member> query = ("select m from member m", Member.class)
name 이므로 String으로 받는다.
TypedQuery<String> query = ("select m.username from member m", String.class)
Query : 반환 타입이 명확하지 않을 때 사용
Query query = ("select m.username, m.age from member m", Member.class)
// TypedQuery
// 타입 정보가 Member로 명확할때
TypedQuery<Member> query =
em.createQuery("select m from Member m",Member.class);
// 타입정보가 String.class로 반환이 명확할 때
TypedQuery<String> query2 =
em.createQuery("select m.username from Member m", String.class);
// m.username(String), m.age(int) : 이렇게 반환타입이 명확하지 않을 때
Query query3 =
em.createQuery("select m.username, m.age from Member m");
qeury.getResultList()
: 결과가 하나 이상일 때 리스트 반환
: 결과가 없으면 빈 리스트 반환
: 빈 collection
이 반환되기 때문에 ullPointerException
에 대한 걱정은 안해도 된다.
query.getSingleResult()
: 결과가 정확히 하나(조심), 단일 객체 반환
: 결과가 없을경우 -> NoResultException
: 결과가 둘 이상이면 -> NonUniqueResultException
// getResultList()
TypedQuery<Member> query4
= em.createQuery("select m from Member m", Member.class);
List<Member> resultList = query4.getResultList();
// 결과값 하나일 때, getSingleResult()
TypedQuery<Member> query5
= em.createQuery("select m from Member m where m.id = 10", Member.class);
Member result2 = query5.getSingleResult();
select m from Member m where m.username = :username
query.setParameter("username", usernameParam);
select m from Member m where m.username = ?1
query.setParameter(1, usernameParam);