1. sort조건 생성.
sort조건이 여러개 있는 경우를 대비하여 forEach로 처리한다.
Order로 ASC인지 DESC인지를 받고 ,
sort조건을 질의할 테이블을 PathBuilder로 생성한다.
getProperty 는 질의할 컬럼명을 생성한다. ( 이것은 sort할때 넣은 String값일 것이다)
마지막으로, tuple.orderBy메소드안에 OrderSpecifier를 통해 넣어준다.
이런식으로 Sort를 넣어주는 것은... QuerydslRepositorySupport가 Sort타입을 지원하지 않아서이다. 따라서 OrderSpecifier객체를 생성해서 넘겨주어야한다.
다만 이 PathBuilder타입에 대해서는 좀더 연구가 필요할 것같다... 큐도메인 객체를 만들어주는 역할인것같음.
2. return해줄 Page<Object[]>타입을 만드는 과정이다.
Page타입은 interface이기때문에, 이것을 구현한 PageImpl타입을 리턴해줄것이다.
tuple.fetch()를 하면 리턴타입은 List<Tuple>타입이다.
즉 현재, List안에 List(=tuple, 여러개의 열을 가진 레코드) 가 있는 구조.
Tuple을 Arrays로 맵핑하고,
그것을 다시 Collections.toList로 만든다.
테스트 결과 order by 와 limit 쿼리가 형성되는 것을 확인할 수 있다!!
댓글 없음:
댓글 쓰기