Search

'정렬'에 해당되는 글 2건

  1. 2011.04.06 [java] List 정렬하기
  2. 2009.04.13 [iBatis] 동적쿼리에서 ORDER BY 하기

[java] List 정렬하기

프로그래밍/Java 2011. 4. 6. 16:05 Posted by galad
http://ssami.tistory.com/291

정렬할 대상 List가 갖는 Info 클래스
###java;highlight: [27,28,29]
package com.omp.bp.cms.common.model;

public class CommonFileInfo implements Comparable<CommonFileInfo> {

    private String fileName;    // 파일명
    private String filePath;    // 파일경로
    private String name;        // 화면 표시용 이름

    public String getFileName() {
        return fileName;
    }
    public void setFileName(String fileName) {
        this.fileName = fileName;
    }
    public String getFilePath() {
        return filePath;
    }
    public void setFilePath(String filePath) {
        this.filePath = filePath;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int compareTo(CommonFileInfo o) {
        return fileName.compareTo(o.getFileName());
    }
}
compartTo 메소드가 Collections를 이용해 정렬할 때 사용된다.
Info 클래스의 구성원 중 하나만 가지고 비교할 때는 Comparable를 구현하는 방법을 사용하고,
여러 개의 구성원 중 선택해서 정렬하는 방식을 원할 때는 맨 위의 링크를 참고.

정렬하는 메소드
###java
/**
 * 파일 정보를 목록으로 생성. 파일명 역순 정렬.
 * @param files
 * @return
 */
private List<CommonFileInfo> getFileInfos(File[] files) {

    List<CommonFileInfo> list = new ArrayList<CommonFileInfo>();

    for(File f : files) {
        CommonFileInfo info = new CommonFileInfo();
        info.setName(f.getName());
        info.setFileName(f.getName());
        info.setFilePath(f.getAbsolutePath());

        list.add(info);
    }

    Collections.sort(list);        // 정렬
    Collections.reverse(list);    // 역순

    return list;
}

<statement id="SELECT_CONTENT_TYPE" resultMap="contenttype-resultMap">
        SELECT
            *
        FROM (
            SELECT
                ROWNUM ROWCNT,
                CONTENT_TYPE, CONTENT_TYPE_NAME, SUBSET_LIST_KEY, STATUS,
                DESCRIPTION_PAGE_NAME, INPUT_PAGE_NAME, DETAIL_VIEW_PAGE_NAME,
                CREATE_ID, CREATE_TIME, UPDATE_ID, UPDATE_TIME
            FROM
                CONTENT_TYPE
        )
        <dynamic prepend="WHERE">
            <isNotEmpty property="pageNavi.startRow">
                ROWCNT BETWEEN #pageNavi.startRow# AND #pageNavi.endRow#
            </isNotEmpty>
        </dynamic>
        <dynamic prepend="ORDER BY">
            <isNotEmpty property="orderColumn">
                $orderColumn$ $orderType$
            </isNotEmpty>
        </dynamic>
    </statement>

$orderColumn$ 인 것에 주목.
문자열 치환일 경우엔 $가 붙는다.
#은 preparedStatment에서 바인딩 하는 경우에 사용한다.(?에 값 넣는 경우처럼)

'프로그래밍 > Framework' 카테고리의 다른 글

[iBatis] iterate 사용법  (1) 2009.04.13
[Struts2] <s:iterator> <s:if> 사용법  (0) 2009.04.13
[iBatis] 동적쿼리문 생성  (0) 2009.04.13
[Struts2] <s:select> 사용법  (0) 2009.04.10
[Struts2] 태그에서 변수 사용법  (0) 2009.04.08