작성
·
442
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()));