250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- execute
- BOJ
- 연결리스트
- CHECK OPTION
- 일대다
- SQL프로그래밍
- exclusive lock
- 연관관계
- 스프링 폼
- eager
- 데코레이터
- shared lock
- 다대다
- 즉시로딩
- 지연로딩
- FetchType
- 유니크제약조건
- JPQL
- 동적sql
- fetch
- dfs
- 다대일
- 비관적락
- PS
- 낙관적락
- 힙
- 백트래킹
- 이진탐색
- 스토어드 프로시저
- querydsl
Archives
- Today
- Total
흰 스타렉스에서 내가 내리지
[Querydsl] 결과 조회 본문
728x90
- fetch() : 리스트 조회, 데이터 없으면 빈 리스트 반환
- fetchOne() : 단 건 조회
- 결과가 없으면 : null
- 결과가 둘 이상이면 com.querydsl.core.NonUniqueResultException 발생
- fetchFirst() : limit(1).fetchOne()
fetchResults() : 페이징 정보 포함, total count 쿼리 추가 실행DEPRECATEDfetchCount() : count 쿼리로 변경해서 count 수 조회DEPRECATED
@Test
public void resultFetch(){
List<Member> fetch = queryFactory
.selectFrom(member)
.fetch();
Member member1 = queryFactory
.selectFrom(member)
.where(member.username.eq("member4"))
.fetchOne();
Member member2 = queryFactory
.selectFrom(member)
.fetchFirst();
Long totalCount = queryFactory
// .select(Wildcard.count) // select count(*)
.select(member.count()) // select count(member.id)
.from(member)
.fetchOne();
}
- Querydsl 의 fetchCount(), fetchResult() 는 개발자가 작성한 select 쿼리를 기반으로 count 용 쿼리를 내부에서 만들어서 실행한다.
- 단순한 쿼리에서는 잘 동작하지만, 복잡한 쿼리에서는 제대로 동작하지 않는다.
- deprecated 됨
- 따라서 count 쿼리가 필요하면 위 예시처럼 별도로 작성한다.
- count(*) 를 사용하고 싶으면 위 예시 주석처럼 Wildcard.count 를 사용한다
- member.count() 를 사용하면 count(member.id) 로 처리된다.
- 응답 결과는 숫자 하나이므로 fetchOne() 을 사용한다.
'JPA' 카테고리의 다른 글
[Querydsl] 집합 함수, GroupBy (0) | 2024.04.18 |
---|---|
[Querydsl] 정렬과 페이징 (0) | 2024.04.18 |
[Querydsl] 검색 조건 쿼리 (0) | 2024.04.18 |
QueryDSL 세팅 (0) | 2024.04.14 |
[JPQL] 조회해서 null 일 경우, 지정한 값을 반환하는 COALESCE (0) | 2024.04.14 |