ページネーションは、Java Webプロジェクトで一般的に使用される機能です。昨日、Spring MVCで簡単なページング操作と検索ページングが実装されました。ここに録音しましょう。使用されるフレームワークは(mybatis+springmvc+spring)です。
最初に、ページングされたツールクラスが必要です。
1。ページネーション
java.io.serializableをインポートします。 / *** Pagination*/ public classページは、Serializable {private static final long serialversionuid = -3198048449643774660l; private int pagenow = 1; //現在のページ番号プライベートint pagesize = 4; //各ページに表示されるレコードの数Private Int TotalCount。 //総記録の総数private int totalpagecount; //ページの総数@suppresswarnings( "unsused")private int startpos; //開始位置、0から開始@suppresswarnings( "unused")private boolean hasfirst; //ホームページ@suppresswarnings( "unsuse")プライベートブールハスプレ; // haslast; //最後のページがあります/ ** * constructor * @param totalcount * @param pagenow */ publicページ(int totalcount、int pagenow)を介してレコードの総数と現在のページを渡します{this.totalcount = totalcount; this.pagenow = pagenow; } / ***ページの総数を取得します。ページの総数=合計レコード /ページの合計* @return* / public int getTotalPageCount(){TotalPageCount = getTotalCount() / getPagesize(); return(totalcount%pagesize == 0)? TotalPageCount:TotalPageCount + 1; } public void settotalpagecount(int totalpagecount){this.totalpagecount = totalpagecount; } public int getPagenow(){pagenowを返します。 } public void setPagenow(int pagenow){this.pagenow = pagenow; } public int getPagesize(){return pagesize; } public void setPagesize(int pagesize){this.pagesize = pagesize; } public int gettotalcount(){return totalcount; } public void settoTotalcount(int totalcount){this.totalcount = totalcount; } / ** *選択レコードの初期位置を取得 * @return * / public int getStartPos(){return(pagenow -1) * pagesize; } public void setStartpos(int startpos){this.startpos = startpos; } / ***それは最初のページ* @return* / public boolean ishasfirst(){return(pagenow == 1)ですか? false:true; } public void sethasfirst(boolean hasfirst){this.hasfirst = hasfirst; } / ***ホームページ* @return* / public boolean ishaspre(){//ホームページがある場合、ホームページがあるため、最初のページではありません。 ishasfirst()を返しますか? True:false; } public void sethaspre(boolean haspre){this.haspre = haspre; } / ***次のページがあります* @return* / public boolean ishasnext(){//最後のページがある場合、最後のページがあるため、次のページがあります。最後のページではありません。 ishaslast()を返しますか? True:false; } public void sethasnext(boolean hasnext){this.hasnext = hasnext; } / ***最後のページはあります* @return* / public boolean ishaslast(){//最後のページではない場合、最後のページの返品があります(pagenow == gettotalcount())? false:true; } public void sethaslast(boolean haslast){this.haslast = haslast; }}このツールクラスを使用して、最初にMyBatisのxxxxmapper.xml構成ファイルにSQLステートメントを書き込みます。
<! - ページネーションSQLステートメント - > <選択id = "selectproductsbypage" resultmap = "return値タイプ"> select * where where where user_id =#{userid、jdbctype = integer} limit#{startpos}、#{pagesize}、 count(*)from table name where where user_id =#{userid、jdbctype = integer} </select>ここでは、2つの<select> sがそれぞれ3パラメーターと1パラメーターに合格する必要があることがわかります。この時点で、対応するDAOファイルixxxxdaoにインターフェイスを記述して、対応するメソッドを記述します。メソッド名は、mapper.xmlのID属性値と同じです。
/ ** *アノテーション方法、ユーザー製品ページネーション、ユーザーIDにログすることによるクエリを使用して複数のパラメーターを渡す * @param userid * @return startpos}、#{pagesize} */ public list <products> selectproductsbypage(@param(value = "startpos")integerpos、 @parad ")整数userid); / ** *ユーザーIDに記録して製品の数量情報とクエリを取得 * @param userid * @return */ public long getProductScount(@param(value = "userid")integer userid);インターフェイス定義が完了したら、対応するビジネスインターフェイスと実装方法を記述し、インターフェイスにそのようなメソッドを定義し、実装クラスでオーバーライドする必要があります。
/ ** * display製品 * @param request * @param model * @param loginuserid */ void showproductsbypage(httpservletrequest request、model model、int loginuserid);
クラスを実装する次の方法は、DAOレイヤーを呼び出し、コントローラーによって渡されたパラメーターを受け入れてビジネスロジック処理を実行することです。リクエストは、フロントエンドで渡されたパラメーターを取得するために使用され、モデルは処理結果をJSPページに返すために使用されます。
@Override public void showproductsbypage(httpservletrequest request、model model、int loginuserid){string pagenow = request.getParameter( "pagenow");ページページ= null; List <ProductWithBlobs>製品= new ArrayList <ProductWithBlobs>(); int totalcount =(int)productdao.getProductScount(loginuserid); if(pagenow!= null){page = new page(totalcount、integer.parseint(pagenow)); AllProducts = this.productdao.selectProductsBypage(page.getStartpos()、page.getPagesize()、loginuserid); } else {page = new Page(TotalCount、1); AllProducts = this.productdao.selectProductsBypage(page.getStartpos()、page.getPagesize()、loginuserid); } model.addattribute( "製品"、製品); Model.Addattribute( "Page"、page); }次はコントローラーの執筆です。ユーザーがこの実際の製品のページにジャンプする必要がある場合、コントローラーの対応するメソッドを実行する必要があります。この処理プロセスは、ビジネスレイヤーメソッドを呼び出して完了し、結果をJSPダイナミックディスプレイに戻すことです。サーバーはページを生成し、現実のためにクライアント(ブラウザ)に渡します。これはMVCプロセスです。
/ ** *「私の製品」リストJSPページ、ページング機能 * * @Param request * @Return */ @RequestMapping(value = "Map Path"、method = requestmethod.get)public string showmyproduct(httpservletrequest request、モデルモデル){// loginuser in session loginuser = esse request.getSession()。getAttribute( "logglususer"); //セッションが無効であるかどうかを判断する(loginuser == null || "" .equals(loginuser)){return "redirect:/"; } int loginuserid = loginuser.getuserid(); //ここの製品サービスは、注入されたiProductserviceインターフェイスthis.productservice.showproductsbypage(request、model、loginuserid)のオブジェクトです。 「JSPパスにジャンプする」を返します。 }JSPページの受け入れ部分は書きません。誰もが同じです。つまり、JSTLとELを組み合わせて書くことです。 (ループアウトするときにも判断を下しました。受け入れられたパラメーターが空の場合、出力の製品はありません。受け入れられたパラメーターが空でない場合にのみ、出力がループアウトされます。
<! - ページング関数Start-> <Div Align = "center"> <font size = "2">合計$ {page.totalpagecount} page </font> <font size = "2"> page $ {page.pagenow} </font> <a href = "myproductpage = 1" le = "rel =" rel = > home </a> <c:chood> <c:test = "$ {page.pagenow -1> 0}"> <a href = "myproductpage?pagenow = $ {page.pagenow -1}" rel = "external nofollow">前のページ</a> href = "myproductpage?pagenow = 1" rel = "returation nofollow" rel = "external nofollow">前のページ</a> </c:> </c:> <c:chode> <c:cheed> <c: "$ {page.totalpagecount == 0}"> < rel = "external nofollow" rel = "external nofollow">次のページ</a> </c:when> <c:when test = "$ {page.pagenow + 1 <page.totalpagecount}"> <a href = "myproductpage?pagenow = $ {page.page.page + 1} <c:test = "$ {page.pagenow + 1> = page.totalpagecount}"> <a href = "myproductpage?pagenow = $ {page.totalpagecount}" rel = "fortence nofollow" rel = "external nofollow"> test = "$ {page.totalpagecount == 0}"> <a href = "myproductpage?pagenow = $ {page.pageNow}" rel = "external nofollow" rel = "external nofollow">最後のページ</a> </c: href = "myproductpage?pagenow = $ {page.totalpagecount}" rel = "external nofollow" rel = "external nofollow">最後のページ</c:視野> </c:> </div> <! - ページネーション関数の終わり - >2。クエリページング
クエリページングに関しては、プロセスはほぼ同じですが、3番目のパラメーター(上記はlogognuserid)がユーザー入力パラメーターを受け入れる必要があることを除きます。このようにして、コントローラーのユーザー入力パラメーター(ページの<inupt>はGETメソッドで渡されます)を受け入れ、次にセッションに追加してクエリページングを完了する必要があります(ここでは、「次のページ」のハイパーリンクのため、異なるJSPページがページングと検索ページを処理するために使用されます。それは個別に外に出て、必要なJSPページに<cluding>タグでロードして、コードを避けることができるようにします):
参照としてコントローラーのコードは次のとおりです。
/ ** *製品名で製品をクエリ * @param request * @param Model * @return */ @RequestMapping(value = "Map Address"、method = requestmethod.get)public String searchforproducts(httpservletrequest request、model model){httpsession session = request.getsession(); string param = request.getParameter( "param");文字列条件=(string)session.getAttribute( "条件"); //最初にセッション中の条件が空であるかどうかを判断します(条件== null){条件= new String(); session.setattribute( "条件"、条件); //セッション中の条件が空の場合は、合格したパラメーターが空であるかどうかを判断します。空の場合は、検索結果ページにジャンプしてくださいif(param == null || "" .equals(param)){return "private/space/productsearchResult"; }} //セッションが空でなく、着信検索条件が空でない場合、paramを条件に割り当てます(param!= null &&!( "」。 session.setattribute( "条件"、条件); } //セッションの条件属性値をクエリ条件として使用します。 「ジャンプページ」を返します。 }上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。