목록분류 전체보기 (572)
오봉이와 함께하는 개발 블로그
집합 집합 함수 /** * JPQL * select * COUNT(m), //회원수 * SUM(m.age), //나이 합 * AVG(m.age), //평균 나이 * MAX(m.age), //최대 나이 * MIN(m.age) //최소 나이 * from Member m */ @Test public void aggregation() throws Exception { List result = queryFactory .select(member.count(), member.age.sum(), member.age.avg(), member.age.max(), member.age.min()) .from(member) .fetch(); Tuple tuple = result.get(0); assertThat(tuple.ge..
페이징 조회 건수 제한 @Test void paging1() { List result = queryFactory .selectFrom(member) .orderBy(member.username.desc()) .offset(1) // 0부터 시작(zero index) .limit(2) // 최대 2건 조회 .fetch(); assertThat(result.size()).isEqualTo(2); } 전체 조회 수가 필요하면? @Test void paging2() { QueryResults queryResults = queryFactory .selectFrom(member) .orderBy(member.username.desc()) .offset(1) // 0부터 시작(zero index) .limit(2) ..
정렬 /** *회원 정렬 순서 * 1. 회원 나이 내림차순(desc) * 2. 회원 이름 올림차순(asc) * 단 2에서 회원 이름이 없으면 마지막에 출력(nulls last) */ @Test void sort() { em.persist(new Member(null, 100)); em.persist(new Member("member5", 100)); em.persist(new Member("member6", 100)) List result = queryFactory .selectFrom(member) .where(member.age.eq(100)) .orderBy(member.age.desc(), member.username.asc().nullsLast()) .fetch() Member member5 =..
결과 조회 fetch() 리스트 조회 데이터 없으면 빈 리스트 반환 fetchOne() 단 건 조회 결과가 없으면 null 결과가 둘 이상이면 com.querydsl.core.NonUniqueResultException fetchFirst() limit(1).fetchOne() fetchResults() 페이징 정보 포함 total count 쿼리 추가 실행 페이징 쿼리가 복잡해지면 성능 때문에 contents(데이터)를 가져오는 쿼리와 total count를 가져오는 쿼리가 다를 때가 있다. 때문에 복잡하고 성능이 중요한 페이징을 할 때는 fetchResults()를 사용하지 말고 쿼리를 따로 날려야 한다. fetchCount() count 쿼리로 변경해서 count 수 조회 @Test void res..
검색 조건 쿼리 기본 검색 쿼리 @Test void search() { Member findMember = queryFactory.selectFrom(member) .where( member.username.eq("member1") .and(member.age.eq(10)) ) .fetchOne(); assertThat(findMember.getUsername()).isEqualTo("member1"); } 검색조건은 .and(), .or()를 메서드 체인으로 연결할 수 있다. select, from을 selectFrom으로 합칠 수 있음 JPQL이 제공하는 모든 검색 조건 제공 member.username.eq("member1") // username = 'member1' member.u..