반응형
mybatis 그리드 멀티 정렬 방법 order by many fields with dynamic query
복수의 컬럼으로 ORDER BY 하는 방법을 알아보겠습니다.
ORACLE 기준입니다. 타 DB의 경우 알맞게 쿼리부분을 수정하세요.
우선 프론트에서는 배열로 정렬할 컬럼과 정렬 방식을 전달합니다.
[ajax parameter object structure]
sorting : [
{column : '정렬할 컬럼명1', order: "정렬방식"},
{column : '정렬할 컬럼명2', order: "정렬방식"}
]
예를들어 그리드의 헤더를 클릭하면 "", "desc", "asc" 순으로 값이 순환되게 됩니다.
정렬방식이 "" 라면 배열에서 제거 합니다. (splice)
쿼리에서는 if, foreach 태그를 활용하여 dynamic query 를 작성합니다.
<select id="sortingTest" parameterType="HashMap">
SELECT *
FROM (
SELECT ROW_NUMBER() OVER(
<if test="sorting.size!=0">
<foreach collection="sorting" item="item" open="ORDER BY" close="" separator=",">
T1.${item.column} ${item.order}
</foreach>
</if>
<if test="sorting.size==0">
ORDER BY T1.기본정렬컬럼 DESC
</if>
) AS RNUM
.
.
.
.
.
)
</select>
예를들어 아래와 같은 데이터가 전달 될 경우
sorting : [
{column : 'REG_DTM', order: "DESC"},
{column : 'ID', order: "ASC"}
]
실제 DB에는 아래와 같이 전달이 됩니다.
SELECT *
FROM (
SELECT ROW_NUMBER() OVER(T1.REG_DTM DESC, T1.ID ASC) AS RNUM
.
.
.
.
.
)
반응형
'Programing > JAVA' 카테고리의 다른 글
Springboot MVC Filter, Interceptor, AOP 차이 실행시점 구현방법 (0) | 2022.05.03 |
---|---|
JAVA FTP storeFile 반응 없을 시 해결 방법 Active / passive 모드 정리 (0) | 2022.01.19 |
Java 대용량 데이터 DB 처리 방법, batch (1) | 2021.10.08 |
JVM 모니터링 Java 메모리 CPU 모니터링 프로그램 VisualVM (0) | 2021.04.21 |
Java 병렬처리를 위한 RecursiveAction (0) | 2020.08.13 |
댓글