JPA/Querydsl
-
Querydsl - 조인JPA/Querydsl 2023. 8. 13. 00:03
조인 - 기본 조인 첫 번째 파라미터에 조인 대상을 지정, 두 번째 파라미터에 별칭으로 사용할 Q타입을 지정하면 된다. /** * 팀 A에 소속된 모든 회원 */ @Test public void join() { List result = queryFactory .selectFrom(member) .join(member.team, team) .where(team.name.eq("teamA")) .fetch(); assertThat(result) .extracting("username") .containsExactly("member1", "member2"); } join(member.team, team)이라 되어있는데 뒤에 있는 team은 QTeam.team인데 static import로 인해서 team으로 ..
-
Querydsl - 정렬과 페이징, 집합JPA/Querydsl 2023. 8. 12. 23:28
정렬 /** * 회원 정렬 순서 * 1. 회원 나이 내림차순(desc) * 2. 회원 이름 올림차순(asc) * 만약, 회원 이름이 없으면 마지막에 출력(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()) // nullsLast는 해당 데..
-
Querydsl - 검색(select)과 결과 조회JPA/Querydsl 2023. 8. 12. 23:06
검색(select) 조건 쿼리 @Test public void search() { Member findMember = queryFactory .selectFrom(member) .where(member.username.eq("member1") .and(member.age.eq(10))) // .where(member.username.eq("member1"),member.age.eq(10))로 and 묶기도 가능 .fetchOne(); assertThat(findMember.getUsername()).isEqualTo("member1"); } select를 할 때에는 위와 같이 querydsl을 사용하면 된다. selectFrom으로 member를 받아온 다음에 where절에 조건을 준다. 여러 조건을 주..
-
Querydls과 JPQL의 차이JPA/Querydsl 2023. 8. 12. 22:28
@BeforeEach public void before() { 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 = new Member("member3", 30, teamB); Member member4 = new Member("member4", 40, teamB); em.persist(member1); em.persist(member2); em.persist(memb..
-
Querydls의 기본 설정JPA/Querydsl 2023. 8. 12. 21:11
start.spring.io에서 프로젝트를 만들면 기본으로 생성되는 gradle.build에 주석으로 처리된 부분들을 추가해줘야 한다. querydls은 spring-boot 처음 생성 시에 추가해주지 않기 때문에 수동으로 설정해줘야 한다. 스프링 부트 3.0 기준 설정 buildscript { ext { queryDslVersion = "5.0.0" } } plugins { id 'java' id 'org.springframework.boot' version '3.1.2' //querydsl 추가 id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" id 'io.spring.dependency-management' version '1.1.2' } group..