2021-05-27

0527 QuerydslRepositorySupport 를 이용한 페이징 & Sort

 


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 쿼리가 형성되는 것을 확인할 수 있다!!

댓글 없음:

댓글 쓰기

0328 fdisk, mkfs, mount, fstab

 1. 하드디스크를 붙인다. 2. fdisk -l로 하드디스크를 확인한다.  - interactiive한 커맨드모드 사용하여 (m) 붙인 하드디스크의 파티셔닝을 한다.  - 마지막에 w를 해야 실제로 반영이 된다.  3. mkfs를 하여 어떤 파일시스...