JPA/Querydsl17 Querydsl 05 - 서브쿼리 서브쿼리 'com.querydsl.jpa.JPAExpressions'사용 바로 코드를 보며 알아보자. 그전에 아래 테스트 코드들의 모든 각 테스트에 @BeforeEach가 적용된다. @BeforeEach public void before(){ queryFactory = new JPAQueryFactory(em); Team teamA = new Team("teamA"); Team teamB = new Team("teamB"); em.persist(teamA); em.persist(teamB); Member member1 = new Member("member1", 10, teamA); Member member2 = new Member("member2", 20, teamA); Member member3 = n.. 2022. 1. 18. Querydsl 04 - 조인 조인 - 기본 조인 /* * 팀A에 소속된 모든 회원 조회 * */ @Test void join() { List result = queryFactory .selectFrom(member) .join(member.team, team)//innerjoin, leftjoin, rightjoin 모두 가능 .where(team.name.eq("teamA")) .fetch(); for (Member m : result) System.out.println("m = " + m); } //테스트 성공 출력결과: m = Member(id=3, username=member1, age=10) m = Member(id=4, username=member2, age=20) • join() , innerJoin() : 내부 조인(.. 2022. 1. 17. Querydsl 03 - 기본문법(정렬, 페이징, 집합) 정렬 orderBy 안에 조건을 추가하여 정렬이 가능하다. 바로 코드로 보자. /* *회원 정렬 순서 1. 회원 나이 내림차순(desc) 2. 회원 이름 내림차순 (desc) 3. 단, 2에서 회원 이름이 없으면 마지막에 출력(null 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))//100살인 회원 .orderBy(member.age.desc(),//나이 내림차순 mem.. 2022. 1. 17. Querydsl 02 - 기본문법(Q타입, 검색조건, 결과조회) JPQL와 Querydsl을 비교하며 기본적인 문법을 알아보자. 먼저 username으로 select하는 JPQL을 보자. @Test void startJPQL() { //member1을 찾아라. Member findMember = em.createQuery("select m from Member m where m.username = :username", Member.class) .setParameter("username", "member1") .getSingleResult(); Assertions.assertThat(findMember.getUsername()).isEqualTo("member1"); } //->테스트 성공 이때 날아간 쿼리문은 아래와 같다. select member0_.member_i.. 2022. 1. 16. 이전 1 2 3 4 5 다음