JPA
[Querydsl] 정렬과 페이징
주씨.
2024. 4. 18. 02:23
728x90
# 정렬
/**
* 회원 정렬 순서
* 1. 회원 나이 내림차순 (desc)
* 2. 회원 나이 오름차순 (asc)
* 단 2에서 회원 이름이 없으면 마지막에 출력 (nulls last)
*/
@Test
public void sort(){
em.persist(new Member(null, 100));
em.persist(new Member("member5", 100));
em.persist(new Member("member6", 100));
List<Member> result = queryFactory
.selectFrom(member)
.where(member.age.eq(100))
.orderBy(member.age.desc(), member.username.asc().nullsLast())
.fetch();
Member member5 = result.get(0);
Member member6 = result.get(1);
Member memberNull = result.get(2);
assertThat(member5.getUsername()).isEqualTo("member5");
assertThat(member6.getUsername()).isEqualTo("member6");
assertThat(memberNull.getUsername()).isNull();
}
- desc(), asc() : 일반 정렬
- nullsLast(), nullsFirst() : null 데이터 순서 부여
# 페이징
@Test
public void paging1(){
List<Member> result = queryFactory
.selectFrom(member)
.orderBy(member.username.desc())
.offset(1)
.limit(2)
.fetch();
assertThat(result.size()).isEqualTo(2);
}