queryDSL
-
[Spring] Querydsl select null 처리Framework/Spring 2023. 3. 17. 21:00
스프링에서 querydsl(5.0.0 기준)을 사용하다보면 테이블에 있는 값이 아닌 테이블의 특정 값으로 projection해야 될 때가 있다. select절만 예시로 보면 select(new QDto(user, info)).from(user).leftJoin(info)... 이렇게 되어 있다고 할 때 공통의 querydsl을 사용해야 할 때 info 부분만 null로 사용할 때 다음과 같은 에러를 볼 수 있다. 아래의 예시처럼 한 개의 쿼리로 동일한 dto로 사용할 때이다. 1. select(new QDto(user, info)).from(user).leftJoin(info)... 2. select(new QDto(user, null)).from(user).leftJoin(info)... 리턴값에 nu..
-
[Spring] Querydsl 동적 쿼리Framework/Spring 2022. 3. 4. 22:22
이번에는 Querydsl로 동적 쿼리를 작성하여 다양한 상황에 대응하는 법에 대해서 알아보고자 한다. jpa나 querydsl을 사용하기 전에는 si업계를 주름잡고 있는 mybatis를 사용했었다. mybatis에서도 동적쿼리를 작성할 수는 있지만 읽기가 굉장히 복잡했었다. 그렇기에 querydsl을 통해서 동적쿼리를 익혀서 어려운 쿼리에 대응해보도록 하자. 우선 동적쿼리를 작성하는 방법은 2가지이다. BooleanBuilder사용 BooleanExpression을 통한 메소드 사용 우선 1번부터 알아보도록 하자. QMember member = new QMember(); void dynamicQuery_BooleanBuilder() { String username = "member1"; Integer a..
-
[Spring] QueryDsl projection(2)Framework/Spring 2022. 3. 2. 21:53
2022.03.01 - [Framework/Spring] - [Spring] QueryDsl projection [Spring] QueryDsl projection 이번 시간에는 QueryDsl을 사용하여 projection하는 방법을 알아보도록 한다. 실무에서 보통 전체 필드에 대한 조회보다는 특정한 필드만 select 하고 싶을 때가 많다. 그럴 때 JPA보다는 QueryDsl을 쓰는 developia.tistory.com 지난번에 QueryDsl projection을 해보았는 데 이번에는 Q 파일을 생성하여 projection하는 방법에 대해서 알아보도록 한다. 바로 코드로 알아보자. List result = queryFactory .select(new QMemberDto(member.usernam..
-
[Spring] QueryDsl projectionFramework/Spring 2022. 3. 1. 21:18
이번 시간에는 QueryDsl을 사용하여 projection하는 방법을 알아보도록 한다. 실무에서 보통 전체 필드에 대한 조회보다는 특정한 필드만 select 하고 싶을 때가 많다. 그럴 때 JPA보다는 QueryDsl을 쓰는게 좋은 그 예시를 보도록 하자. EntityManager em; List result = em.createQuery("select new study.developia.querydsl.dto.MemberDto(m.username, m.age)" + " from Member m", MemberDto.class).getResultList(); 우선 순수 JPA로 작성하였을 때는 다음과 같다. 쿼리 부분을 보면 select절에 dto 패키지명을 전부 다 적어야하는 것을 알 수 있다. 물론..