목록분류 전체보기 (572)
오봉이와 함께하는 개발 블로그
동적 쿼리 - BooleanBuilder 사용 동적 쿼리를 해결하는 두가지 방식 BooleanBuilder Where 다중 파라미터 사용 BooleanBuilder @Test void dynamicQuery_BooleanBuilder() { String usernameParam = "member1"; Integer ageParam = 10; List result = searchMember1(usernameParam, ageParam); Assertions.assertThat(result.size()).isEqualTo(1); } private List searchMember1(String usernameCond, Integer ageCond) { BooleanBuilder builder = new Boo..
프로젝션과 결과 반환 - @QueryProjection 생성자 + @QueryProjection @Data public class MemberDto { private String username; private int age; public MemberDto() { } @QueryProjection public MemberDto(String username, int age) { this.username = username; this.age = age; } } @QueryProjection 추가 후 gradle -> other -> compileQuerydsl 후 QMemberDto 생성 확인 /** * study.querydsl.dto.QMemberDto is a Querydsl Projection typ..
프로젝션과 결과 반환 - DTO 조회 먼저 순수 JPA에서 DTO 조회하는 방법을 보자. 순수 JPA에서 DTO 조회 @Data public class MemberDto { private String username; private int age; public MemberDto(String username, int age) { this.username = username; this.age = age; } } @Test void findDto() { List result = em.createQuery("select new study.querydsl.dto.MemberDto(musername, m.age) " + "from Member m", MemberDto.class) .getResultList(); f..
프로젝션과 결과 반환 - 기본 프로젝션이란 select절에 어떤 것을 가져올지에 대한 대상을 지정하는 것이다. 프로젝션 대상이 하나 @Test void simpleProjection() { List result = queryFactory .select(member.username) .from(member) .fetch(); for (String s : result) { System.out.println("s = " + s); } } 프로젝션 대상이 하나면 타입을 명확하게 지정할 수 있다. 프로젝션 대상이 둘 이상이면 튜플이나 DTO로 조회 튜플 조회 Querydsl이 여러 개 조회할 때를 대비해서 만들어놓은 임의의 타입으로 프로젝션 대상이 둘 이상일 때 사용한다. com.querydsl.core.Tupl..
상수, 문자 더하기 상수가 필요하면 Expressions.constant(xxx)를 사용하자. @Test void constant() { List result = queryFactory .select(member.username, Expressions.constant("A")) .from(member) .fetch() for (Tuple tuple : result) { System.out.println("tuple = " + tuple); } } tuple = [member1, A] tuple = [member2, A] tuple = [member3, A] tuple = [member4, A]위와 같이 최적화가 가능하면 SQL에 constant 값을 넘기지 않는다. 상수를 더하는 것 처럼 최적화가 어려우..