일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- pointcut
- Thymeleaf
- 스프링
- db
- JPQL
- java
- spring
- 자바
- 인프런
- Exception
- JDBC
- Greedy
- 스프링 핵심 원리
- 스프링 핵심 기능
- 그리디
- Proxy
- 알고리즘
- springdatajpa
- AOP
- QueryDSL
- 백준
- SpringBoot
- 김영한
- Spring Boot
- transaction
- Android
- http
- kotlin
- jpa
- Servlet
- Today
- Total
목록인프런/[인프런] QueryDsl (28)
개발자되기 프로젝트
1. Case문 select, 조건절(where), order by에서 사용 가능 2. 예제 간단한 경우 @Test public void basicCase(){ List result = queryFactory .select(member.age .when(10).then("열살") .when(20).then("스무살") .otherwise("기타")) .from(member) .fetch(); for (String s : result) { System.out.println("s = " + s); } } s = 열살 s = 스무살 s = 기타 s = 기타 복잡한 경우 caseBuilder 생성 필요. @Test public void complexCase(){ List result = queryFactory ..
1. 서브쿼리 쿼리안에 쿼리 넣기 com.querydsl.jpa.JPAExpressions 사용 2. 예제1 : 나이가 가장 많은 회원 조회 /** * 나이가 가장 많은 회원 조회 */ @Test public void subQuery(){ //서브쿼리는 바깥에 있는 alias랑 겹치면 안됨. //QMember새로 만들어줘야함. QMember memberSub = new QMember("memberSub"); List result = queryFactory .selectFrom(member) .where(member.age.eq( JPAExpressions .select(memberSub.age.max()) .from(memberSub) )) .fetch(); assertThat(result).extrac..
1. 기본 조인 조인의 기본 문법은 첫 번째 파라미터에 조인 대상을 지정하고, 두 번째 파라미터에 별칭(alias)을 사용하여 Q타입을 지정.(QTeam.team) @Override public Q join(EntityPath target, Path alias) { return queryMixin.join(target, alias); } /** * 팀A에 소속된 모든 회원 조회 */ @Test public void join(){ List result = queryFactory .selectFrom(member) .join(member.team, QTeam.team) .where(team.name.eq("teamA")) .fetch(); assertThat(result) .extracting("userna..
1. 예제 tuple : 다양한 타입이 여러개 일 경우 사용 tuple.get~ 으로 꺼낼 수 있음. 실무에서는 DTO로 꺼내서 사용함. public void aggregation(){ 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.get(member.count())).isEqualTo(4); assertThat(tuple.get(member.age.sum())).isEqualTo(100); } 2. Grou..
1. 예제 offset : 몇 개 건너뒴? limit : 몇 개 씩? @Test public void paging1(){ List result = queryFactory .selectFrom(member) .orderBy(member.username.desc()) .offset(1) .limit(2) //2개씩 .fetch(); assertThat(result.size()).isEqualTo(2); } fetchResults()를 통해 페이징 정보 포함. @Test public void paging2(){ QueryResults queryResults = queryFactory .selectFrom(member) .orderBy(member.username.desc()) .offset(1) .limit(..
1. 예제 /** * 회원 정렬 순서 * 1. 회원 나이 내림차순 * 2. 회원 이름 올림차순 * 3. 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 result = queryFactory .selectFrom(member) .where(member.age.eq(100)) .orderBy(member.age.desc(), member.username.asc().nullsLast()) .fetch(); Member member5..
1. query 결과 조회 방법 fetch의 사전적 의미 : 가져오다. fetch() : 리스트 조회, 데이터 없으면 빈 리스트 반환 fetchOne() : 단 건 조회 결과가 없으면 : null 결과가 둘 이상이면 : com.querydsl.core.NonUniqueResultException fetchFirst() : limit(1).fetchOne() fetchResults() : 페이징 정보 포함, total count 쿼리 추가 실행 fetchCount() : count 쿼리로 변경해서 count 수 조회 2. 예제 fetchResults()의 경우 getResults()를 통해 contents를 꺼낼 수 있음. @Test public void resultFetch(){ List fetch = ..
1. where문에 and나 or 사용 가능 selectFrom로 select와 from 합칠 수 있음 ㅋㅋ @Test public void search(){ Member findMember = queryFactory .selectFrom(member) .where(member.username.eq("member1").and(member.age.eq(10))) .fetchOne(); assertThat(findMember.getUsername()).isEqualTo("member1"); } 2. JPQL이 제공하는 모든 검색 조건 제공 member.username.eq("member1") // username = 'member1' member.username.ne("member1") //username ..