본문 바로가기
Java

JPA QueryDSL - 쿼리 함수 정리

by sinabeuro 2024. 2. 12.
728x90

 

JPAQueryFactory 함수

select() - 조회할 컬럼 지정

  • select( entity.variable 명, entity.variable 명)
  • selectFrom() - 조회할 컬럼 전체 및 from 테이블 entity 지정
    • seledtFrom( entity 인스턴스명)

 

as() - 컬럼 alias 함수

 

from() - 조회 대상 테이블

  • from(centerStockOutMaster)

join() - join 할 테이블 지정

  • join(saleBusinessPlaceMaster)
  • leftJoin() - left join 할 테이블 지정
  • rightJoin() - 사용하지 말자
  • innerJoin() - join()과 동일
  • on() - join 시 join 테이블에 매핑되는 컬럼 정의
    • on(centerStockOutMaster.storeCode.eq(saleBusinessPlaceMaster.businessPlaceCode))

 

where() - 조건절 

  • where(centerStockOutMaster.stockOutStatusCode.`in`(stockOutStatusCodeIn))
  • and() - 조회 조건이 여러개일 경우 and() 함수 사용
    • .and(centerStockOutMaster.receiveOrderSeperateCode.notIn(receiveOrderSeperateCodeNotIn))
      .and(centerStockOutMaster.stockOutTobeYmd.goe(condition1))
  • eq() - 등호와 같음
  • gt() - ">" 와 같음
  • lt() - "<" 와 같음
  • goe() - ">=" 와 같음
  • loe() - "<=" 와 같음 
  • ne() - "<>" 와 같음
  • `in`() - in 절
    • in에 들어가는 값은 배열형태로 선언 후 지정 ( var stockOutStatusCodeIn = arrayListOf("2", "3"))
  • notIn() - not in 절
  • in과 동일하게 배열형태로 선언 후 지정
  • between() - between
    • centerStockOutMaster.centerCode.between(centerStockOutRequestDto.fromCenterCode, centerStockOutRequestDto.toCenterCode)

orderBy() - 특정 컬럼 기준 정렬시 사용. 여러개인 경우 orderBy()를 여러번 사용하면 된다. (다른 좋은 방법 있는지 확인 필요)

 

groupBy() -특정 컬럼 기준 grouping시 사용. 여러개인 경우 groupBy()를 여러번 사용하면 된다. (다른 좋은 방법 있는지 확인 필요) 

 

case when 

  • `when`(), then(), otherwise() 로 구현

subquery

  • select, from, where 절에 subquery 사용 가능
  • subquery를 사용하려면 JPAExpressions.select() 로 사용

concat() - 문자열 concatenation 함수

 

max() - max() 함수

 

min() - min() 함수

 

count() - count 함수 

 

DB 내장함수 사용

  • Expressions.stringTemplate 등을 사용
  • fetchJoin() - join 테이블 데이터를 한번에 가져오는 함수. oms 프로젝트에서는 사용하지 않는것이 바람직함

 

Oracle 내장함수/기능 중 사용불가

  • Oracle Hint - addFlag 함수가 이전에 존재하였는데 없어짐. 확인 필요
  • DECODE 함수 - case when 으로 변경하여 개발 필요

 

 

참고자료
https://m.blog.naver.com/leejongcheol2018/222042407888

728x90

댓글