sqlページングspringmvcとdisplaytag実装


ページングの原理
2つの部分の構成
  • ページングナビゲーション情報
  • 各ページのデータ問合せ文情報
  • この機能を実現するには、クエリーの情報が必要です.
     
        1. 合計レコード数:resultSize 2.1ページあたりのレコード数:pageSize 3.現在のページ番号:pageIndex 4.総ページ数(表示が必要な場合)は、resultSize-1/pageSize+1で得られるページ内の属性です.
     
    いずれの実装においても、上記の情報は備えていればよい.以下にdisplaytagラベルを使用します.DisplaytagはMVCモードに適した非常に使いやすい表表示ラベルです.ホームページはhttp://displaytag.sourceforge.netです.
     
     
    sqlのページングpageIndex=(pageIndex-1)*pageSize
        1. mysql limitの使用
     
      select * from users limit pageIndex, pageSize

       
        2. oracle rownumの使用
       
    select * from (
    	  select a.*, rownum num from (
    		select * from users order by name desc) a
    	  where rownum <= (pageSize + pageIndex) ) 
          where num >= pageIndex

     
    インタフェース実装
        1. ページ番号jspを表示
        
    <%@ taglib prefix="display" uri="http://displaytag.sf.net/el" %>
    	
       <display:table name="userList"  pagesize="10" requestURI="user.do"  sort ="external" 
    
    id ="row" partialList ="true"  size ="resultSize">
    		<display:column property ="userid"  title ="  "/>
    		<display:column property ="username"  title ="   "/>
    		<display:column property ="email"  autolink="true" title ="  "/>
    		<display:column title="  ">
    			<a href="user.do?action=delete&id=<c:out value="${row.userid}"/>">  </a>
    		</display:column>
       </display:table>

     
    説明tableの属性name=「userList」はレコードセットをセッションまたはrequestのキー値pagesize=「10」に存在し、各ページに10個のデータsort=「external」外部ソートid=「row」表id値を表示し、プログラムに関連するパラメータpartialList=「true」セグメントデータベースからデータを読み出すcolumnのプロパティautolink=「true」自動生成リンクemailまたはurl他のプロパティは、持参した例を参照してください.
     
       2. controller (user.do) springmvc
      
    Map model = new HashMap();
            //      
            String pageIndexName = new ParamEncoder("row")
                    .encodeParameterName
    
    (org.displaytag.tags.TableTagParameters.PARAMETER_PAGE);
            //         
            int pageSize = 10;
            //    
            int pageIndex = LotteryUtil.isEmpty(request.getParameter(pageIndexName)) ? 0 : 
    
    (Integer
                    .parseInt(request.getParameter(pageIndexName)) - 1);
            //   
            int resultSize = userService.getAllUserCount();
            //    
            List<User> userList = userService.getUsers(pageIndex, pageSize);
    
            model.put("resultSize", resultSize);
            model.put("userList", userList);
            return new ModelAndView("userList", model);

      
    上はspringmvcを用いて実装されており,他の実装は類似している.