QType class는 QueryDSL 설정이 성공적으로 진행되면,
@Entity가 붙은 클래스를 찾아서 자동으로 생성된다.
QueryDSL을 사용해 method 기반으로 쿼리를 작성할 때,
우리가 만든 도메인 클래스(Entity Class)를 설명해주는 메타 데이터 역할을
맡으며, 쿼리의 조건을 설정할 때 사용된다.
val post=QPost.post // 기본 instance
val post=QPost("p") // 별칭 지정
INSERT - INTO
UPDATE - SET
WHERE
특정 조건을 찾기 위해 사용됨.
eq = equal ("=")
ORDER BY
numLike가 많은 순서로 "정렬"한다.
.orderBy(post.numLike.asc) -> 오름차순
.orderBy(post.numLike.desc) -> 내림차순
QueryDSL에서도 asc와 desc를 표현할 수 있다.
GROUP BY
AND/OR
JOIN
응시자 중 박씨면서 70점 이상인 사람의 수는 ?
SQL에서는 이렇게 쓸 수 있고
SELECT * FROM A
INNER JOIN B ON A.id=B.id --(A의 id와 B의id가 같음 (외래키))
WHERE
A.name like "박%"
AND
B.score > 70
QueryDSL에서는 이렇게 쓸 수 있다.
queryFactory.selectfrom(a)
.innerjoin(a.id, b) // 명확히는 innerJoin(a).on(b.id.eq(a.id))
.where(a.name.like("박%"))
.and(b.score.gt(70))
.fetch()
Left Join을 사용할 때에는 null에 주의해야 한다