개발자 센터/iBatis

iBatis 에서 페이징하는 방법

피곤키오 2009. 12. 13. 20:24

한 페이지에 10개의 게시글을 불러오는 메서드 작성

sqlMap.queryForList(String args0, Object args1)
public static List getBoardList(long rowsPerPage, long currentPage) {
  List result = new ArrayList(); 
  SqlMapClient sqlMap = MyAppSqlConfig.getSqlMapInstance();
  
  //페이지 정보를 저장한 객체생성
  BoardPage bp = new BoardPage();
  bp.setRowsPerPage(rowsPerPage);
  bp.setCurrentPage(currentPage);
  
  try {
   
   //페이지정보를 저장한 객체를 인자로 넘겨서 리스트를 구함
   result = sqlMap.queryForList("getBoardList", bp);   
   
  } catch(Exception e) {
   e.printStackTrace();
  }
  return result;
 }

 

Board.xml에서 매핑되는 코드 작성

Board.xml
<!-- select된 Board객체를 Mapping시킴 -->
 <resultMap id="boardResultMap" class="board.model.Board">
  <result property="bno" column="bno" />
  <result property="subject" column="subject" />
  <result property="writer" column="writer" />
  <result property="writedate" column="writedate" />
  <result property="hitcount" column="hitcount" />
 </resultMap>
 
  <!-- 페이지에 맞춰 게시글 검색  -->
  <select id="getBoardList" parameterClass="board.model.BoardPage" resultMap="boardResultMap" resultClass="board.model.Board">
  <![CDATA[
  select *
  from ( select rownum rnum, bno, subject, writer, writedate, hitcount
   from ( select bno, subject, writer, writedate, hitcount
             from board
       order by bno desc )
   where rownum <= ( #rowsPerPage# * #currentPage# )
   )
  where rnum >= ( #rowsPerPage# * ( #currentPage# - 1 ) + 1 )
  ]]>