일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JDBC
- Thymeleaf
- http
- 인프런
- QueryDSL
- jpa
- 김영한
- spring
- 스프링 핵심 기능
- 스프링 핵심 원리
- 그리디
- transaction
- kotlin
- 스프링
- SpringBoot
- Android
- 백준
- Exception
- pointcut
- Proxy
- Greedy
- springdatajpa
- Servlet
- AOP
- db
- 자바
- Spring Boot
- java
- 알고리즘
- JPQL
- Today
- Total
목록QueryDSL (27)
개발자되기 프로젝트
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 ..
1. Q 클래스 인스턴스 생성 방법 별칭 직접 지정 QMember qMember = new QMember("m"); //별칭 직접 지정 기본 인스턴스 사용 QMember qMember = QMember.member; //기본 인스턴스 사용 기본 인스턴스를 사용하면 QMember를 staic으로 등록해서 코드 줄일 수 도 있음 package study.querydsl; import com.querydsl.jpa.impl.JPAQueryFactory; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.be..
1. JPQL 문자로 작성됨 -> 오타나면 실행해봐야 알 수 있음. @Test public void startJPQL(){ //member1 찾기 String qlString = "select m from Member m where m.username = :username"; Member findMember = em.createQuery(qlString, Member.class) .setParameter("username", "member1") .getSingleResult(); assertThat(findMember.getUsername()).isEqualTo("member1"); } 2.Querydsl JPAQueryFactory에 entityManger 넘겨줌 QMember생성시 변수 명에 별칭 지..