개발노트/jqGrid
[jqGrid] jqGrid + MyBatis로 오름차/내림차 동적 정렬 구현하기
dev-mylee
2025. 1. 20. 16:11
오늘 헷갈린 내용 정리 노트
## 기본 구조
### MyBatis Mapper
- 동적 정렬을 위해 `<choose>` 태그 활용 - 기본적으로 `REG_DT` 내림차순 정렬
<choose>
<when test="sortColumn != null and sortColumn != ''">
ORDER BY
<choose>
<when test="sortColumn == 'count'">BOARD_COUNT</when>
<when test="sortColumn == 'title'">BOARD_TITLE</when>
<when test="sortColumn == 'writer'">USER_NM</when>
<when test="sortColumn == 'date'">REG_DT</when>
<otherwise>REG_DT</otherwise>
</choose>
<choose>
<when test="sortOrder.equalsIgnoreCase('desc')">DESC</when>
<otherwise>ASC</otherwise>
</choose>
</when>
<otherwise>
ORDER BY REG_DT DESC
</otherwise>
</choose>
### jqGrid
- beforeRequest 이벤트 핸들러로 정렬 파라미터 추가
$("#boardTable").jqGrid({
beforeRequest: function() {
var grid = $(this);
var sortColumnName = grid.jqGrid('getGridParam', 'sortname');
var sortOrder = grid.jqGrid('getGridParam', 'sortorder');
grid.jqGrid('setGridParam', {
postData: {
sortColumn: sortColumnName,
sortOrder: sortOrder
}
});
}
});
### 주의할 점
VO 설정
- sortColumn, sortOrder 필드 추가
- Getter, Setter 필수
서비스 로직
- 정렬 컬럼 기본값 처리
- 허용되지 않은 컬럼 정렬 방지
헷갈 포인트
- 정렬 컬럼명 매핑
- MyBatis의 <choose> 태그로 컬럼명 변환
- 프론트 컬럼명과 DB 컬럼명 일치시키기
- 기본 정렬 설정
- 정렬 파라미터 없을 때 기본값 지정 중요
- 대부분 최신순(날짜 내림차순)으로 처리