-
카테고리
-
세부 분야
백엔드
-
해결 여부
미해결
Slice 질문 있습니다.
21.01.26 14:52 작성 조회수 365
1
안녕하세요, 만약 Page대신 Slice를 사용하려고 하면
리미트에 +1 만큼하고 쿼리를 날리고, 다음페이지가 있는지 확인해야하는데, 이 부분은 아래 코드처럼 개발하는 사람이 직접 처리해주어야 하는건가요?
List<MemberTeamDto> content = queryFactory
.select(new QMemberTeamDto(
member.id.as("memberId"),
member.username,
member.age,
team.id.as("teamId"),
team.name.as("teamName")))
.from(member)
.leftJoin(member.team, team)
.where(
usernameEq(condition.getUsername()),
teamNameEq(condition.getTeamName()),
ageBetween(condition.getAgeLoe(), condition.getAgeGoe()))
.offset(pageable.getOffset())
.limit(pageable.getPageSize() + 1)
.fetch();
if (content.size() == pageable.getPageSize() + 1) {
SliceImpl slice = new SliceImpl<>(content.subList(0, pageable.getPageSize()), pageable, true);
} else {
SliceImpl slice = new SliceImpl<>(content, pageable, false);
}
그리고, 카운트 쿼리를 따로 날리는 Complex인 경우
현재 Member와 Team이 다대일 이니깐 아래처럼leftJoin(member.team, team) 이부분 지워도 count는 똑같이 나오는게 맞죠??
queryFactory
.selectFrom(member)
.where(
username(condition.getUsername()),
teamName(condition.getTeamName()),
ageBetween(condition.getAgeLoe(), condition.getAgeGoe()));
답변을 작성해보세요.
2
김영한
지식공유자2021.01.26
안녕하세요. seungbin님^^
Querydsl은 slice를 직접 해주어야 합니다.
그리고 두번째 질문은 제가 답을 드리는 것도 좋지만, 직접 문제가 될 것 같은 케이스 들을 만들어서 테스트 해보시길 추천드립니다. 그래야 완전히 본인 것이 되니까요^^
감사합니다.
1
답변 2