SSMプロジェクトがページング操作を形成(PageHepler使用)

Mavenは依存関係を追加のpom.xml

<依存性>
<のgroupId> com.github.pagehelper </のgroupId>
<たartifactId> pagehelper </たartifactId>
<バージョン> 5.1.2 </バージョン>
</依存>
。1
2
。3
。4
。5
applicationContext.xmlをSqlSessionFactoryBeanにインターセプターを追加データベースはMySQLデータベースに他のデータベースが相互に交換することができ、私はMySQLデータベースを使用し交換することができます。

<豆ID = "工場"クラス= "org.mybatis.spring.SqlSessionFactoryBean">
<プロパティ名= "データソース" REF = "データソース"> </ property>の
<! -传入PageHelper的插件- >
<プロパティ名前= "プラグイン">
<配列>
<! -传入插件的对象- >
<beanクラス= "com.github.pagehelper.PageInterceptor">
<プロパティ名= "プロパティ">
<小道具>
<=キーを支えます"helperDialect"> MySQLの</小道具>
<キープロプ= "合理的な">真</小道具>
</小道具>
</ property>の
</ビーン>
</アレイ>
</ property>の
</豆>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17。
タブ以下を用いることができ、1行のコードを呼び出す必要がDAO層ServiceImplに添加する
PageHelper.startPage(PAGENUM、pageSizeを)。

@Override
パブリックリスト<シスログ> selall(PAGENUM整数、整数のpageSize){
PageHelper.startPage(PAGENUM、pageSizeを);
(iSysLogDao.selAllを返す);
}
1
2
3。
4。
5。
コントローラ層は、この主題PageInfoの情報を格納するために必要

( "/ショー")@RequestMapping
公共のModelAndViewショー{(=真)整数のpageSize必要RequestParam(はdefaultValue = "10"、@ @RequestParam(はdefaultValue = "1"、必須=真)整数PAGENUM)
のModelAndViewのModelAndView =新規のModelAndView ( "syslogのリスト");
リスト<シスログ> syslogList = iSysLogService.selAll(PAGENUM、pageSizeを)。
PageInfo pageInfo =新しいPageInfo(syslogList)。
modelAndView.addObject( "pageInfo"、pageInfo)。

戻りのModelAndView;
}
1
2
3。
4。
5。
6。
7。
8。
9。
注フロントエンドコールpageInfo.listこと

<C:のforeachアイテム= "$ {} pageInfo.list" VAR = "シスログ">
<TR>
<TD> <INPUT名= "IDS"タイプ= "チェックボックス"> </ TD>
<TD> {$シスログ。 } ID </ TD>
<TD> syslog.visitTimeStr $ {} </ TD>
<TD> syslog.username $ {} </ TD>
<TD> syslog.ip $ {} </ TD>
<TD> $ { } syslog.url </ TD>
<TD> $ {MS} syslog.executionTime </ TD>
<TD> syslog.method $ {} </ TD>
</ TR>
</ C:forEachの>
1。
2
3。
4。
5。
6
7
8
9
10
11
12であり
、PageInfoページング情報を直接使用することができるカプセル化

<DIV CLASS = "ボックスツールプル右">
<ulのクラス= "改ページ">
<LI> <のhref = "$ {pageContext.request.contextPath} / SYSLOG /ショー?PAGENUM = 1&pageSizeを= $ {pageInfo。 pageSizeを} "ARIAラベル= "前">首页する</a>ます。</ li>
<LI> <のhref =" $ {pageContext.request.contextPath} / SYSLOG /ショー?PAGENUM = $ {pageInfo.pageNum-1 }&pageSizeを= $ {pageInfo.pageSize} ">上一页</a>の</ LI>
<C:forEachのは=開始" 1"端= "$ {pageInfo.pages}" VAR = "PAGENUM">
<LI> <a href="${pageContext.request.contextPath}/sysLog/show?pageNum=${pageNum}&pageSize=${pageInfo.pageSize}"> $ {PAGENUM} </a>の</ LI>
</ C: forEachの>
<LI> <のhref = "$ {pageContextの。request.contextPath} / SYSLOG /ショー?PAGENUM = $ {pageInfo.pageNum + 1}&pageSizeを= $ {pageInfo.pageSize} ">下一页する</a>ます。</ li>
<LI> <a href="${pageContext.request.contextPath}/sysLog/show?pageNum=${pageInfo.pages}&pageSize=${pageInfo.pageSize}" aria-label="Next">尾页</ > </ LI>
</ UL>
</ div>
1
2
3
4
5
6
7
8
9
10
11
PageInfo源是下面代码

/ *
* MITライセンス(MIT)は、
*
*著作権(C)2014年から2017年には[email protected]
*
*許可はここにコピーを取得するすべての人に、無償で、許可された
本ソフトウェアの*および関連文書のファイル( 「ソフトウェア」)、対処するための
権利を無制限ソフトウェアで*
、コピーを使用、変更、マージ、公開、配布、サブライセンス、および/または販売する*
*本ソフトウェアのコピーを、とに人々を許可します誰ソフトウェアがあり
、以下の条件に従う、そうする*家具:
*
上記の著作権表示*この許可通知が含まれなければならない
*ソフトウェアのすべてのコピーまたは大部分。
*
*本ソフトウェアは、いかなる保証もない、「AS IS」明示または提供され
、商品性の保証を含むがこれらに限定されない*黙示を、
特定の目的への適合性、および非侵害FOR *適合。いかなる場合に
*作者または著作権所有者は、いかなる請求、損害またはその他のに対して、一切責を負わ
から生じる、*責任に関わら契約のアクションで、不法行為もしくはその他
*ソフトウェアまたは使用またはその他に関連して、またはOUTお取引
SOFTWARE *。
* /

パッケージcom.github.pagehelper。

インポートしたjava.io.Serializable;
インポートのjava.util.Collection;
輸入はjava.util.List;

/ **
*ページ<E>の結果に梱包
* <P - />
*主に参照、プロパティの数のタブを追加します:HTTP://bbs.csdn.net/topics/360010907
*
* @author liuzh / abel533 / isea533
* @Version 3.3.0
* 3.2.2 @since
* LOCATION:http://git.oschina.net/free/Mybatis_PageHelper
* /
@SuppressWarnings({ "rawtypes"、 "未チェック"})
publicクラスPageInfo <T >実装Serializableを{
プライベートロング決勝静的なのserialVersionUID = 1L;
//このページ
プライベートint型PAGENUM;
あたり//数
のpageSize int型プライベート;
//このページの数
プライベートint型のサイズ。

//以来startRow属性と具体的な使用方法があることこことendRow一般的ではありません
//ページで「ショーstartRow属性は、データの合計サイズをとendRowする」ことができます

//現在のページは、データベース内の行番号の最初の要素である
民間のint startRow属性;
//現在のページのデータベース内の行番号の最後の要素
プライベートint型とendRow;
//レコードの総数
プライベート合計ロング;
ページの//総数
プライベートページには、int型;
//結果セット
のプライベートリスト<T>のリスト。

//元の
プライベートint型prePage;
//次
のプライベートint型NEXTPAGE。

//の最初のページかどうか
プライベートisFirstPageブール=偽;
//最後のページかどうか
プライベートisLastPageブール=偽;
//はあり前のページ
プライベートhasPreviousPageブール=偽;
//次があれば
プライベートブールhasNextPageは= falseに;
//ナビゲーション・ページ番号
プライベートint型navigatePages;
//すべてのナビゲーション・ページ番号
プライベートint型[] navigatepageNums、
ナビゲーションバー//上の最初のページ
のプライベートint型navigateFirstPage、
ナビゲーションバー//上の最後のページ
のプライベートint型navigateLastPage。

パブリックPageInfo(){
}

/ **
*包装ページ对象
*
* @paramリスト
* /
公共PageInfo(リスト<T>リスト){
この(リスト、8);
}

/ **
*包装ページ对象
*
* @param一覧ページ结果
* @param navigatePages页码数量
* /
公共PageInfo(リスト<T>リスト、int型navigatePages){
場合(リストのinstanceofページ){
ページページ=(ページ)のリスト。
this.pageNum = page.getPageNum()。
this.pageSize = page.getPageSize()。

= page.getPagesのthis.pages();
This.List =ページ;
this.size page.size =();
this.total page.getTotal =();
//結果があるので> startRow属性、実際のニーズ+ 。1
(this.size == 0){IF
; this.startRow = 0
; this.endRow = 0
他{}
this.startRow page.getStartRow =()+ 1;
//実際とendRowを計算する(前回特別)
this.endRow this.startRow = - + this.size 1;
}
}そうIF(コレクションリストのinstanceof){
。this.pageNum = 1;
this.pageSizeはlist.size =();

= this.pageSize this.pages> 0.1:0 ;?
This.List =一覧;
this.sizeはlist.size =();
this.totalはlist.size =();
this.startRow = 0;
this.endRow = ()> 0はlist.size()はlist.size - 1:?0;
}
(コレクションリストのinstanceof){IF
; this.navigatePages = navigatePages
//ナビゲーションページ算出
calcNavigatepageNumsを();
//フロントページを計算し、最初のページ最後に、
calcPage();
//分析のページ境界
judgePageBoudary();
}
}

/ **
*計算ナビゲーションページ
* /
プライベート無効calcNavigatepageNums(){
//総ページ数がより少ないか、ページナビゲーションの数に等しい
IF(ページ<= navigatePages){
navigatepageNums =新しい新しいINT [ページ];
のため(int型I = 0 ; Iは、ページを<; Iは++){
navigatepageNums [I] = I + 1;
}
とき}他{//ページの総数は、ページナビゲーションより大きい場合
[navigatePages] =新しい新しいINT navigatepageNums;
INT = PAGENUM STARTNUM - navigatePages / 2;
INT endNum = PAGENUM + navigatePages / 2。

IF(STARTNUM <1){
STARTNUM = 1。
//(最前navigatePages页
ため(INT i = 0; iは<navigatePagesと、iは++){
navigatepageNums [I] = STARTNUM ++;
}
}そうでない場合(endNum>ページ){
endNum =ページが;
//最后navigatePagesは页
ための式(I int型= navigatePages - 1; iは> = 0; i--){
navigatepageNums [I] = endNum--;
}
}他{
//所有中间页
ため(INT i = 0; iはnavigatePages <; iは++){
navigatepageNumsを[I ] = STARTNUM ++;
}
}
}
}

/ **
*计算前后页、第一页、最后一页
* /
プライベートボイドcalcPage(){
場合(navigatepageNums = nullの&& navigatepageNums.length> 0!){
navigateFirstPage = navigatepageNums [0];
navigateLastPage = navigatepageNums [navigatepageNums.length - 1]。
IF(PAGENUM> 1){
prePage = PAGENUM - 1。
}
(PAGENUM <ページ){もし
NEXTPAGE = PAGENUM + 1。
}
}
}

/ **
*判定页面边界
* /
プライベートボイドjudgePageBoudary(){
isFirstPage PAGENO = == 1。
islastpage PAGENO = ==ページ|| ページ== 0 ;;
hasPreviousPage PAGENO => 1。
hasNextPage PAGENO = <ページ。
}

getPageNumパブリックINT(){
戻りPAGENO。
}

公共ボイドsetPageNum(int型PAGENO){
this.pageNum = PAGENO。
}

公共INTはgetpagesize(){
pageSizeをを返します。
}

公共ボイドsetPageSize(INTページサイズ){
this.pageSize =のpageSize。
}

公共INTのgetSize(){
戻りサイズ;
}

公共ボイドのsetSize(int型のサイズ){
this.size =サイズ。
}

公共INT getStartRow(){
startRow属性を返します。
}

公共ボイドsetStartRow(INT startRow属性){
this.startRow = startRow属性。
}

公共INT getEndRow(){
とendRowを返します。
}

公共ボイドsetEndRow(INTとendRow){
this.endRow =ほうがendRowより大きい。
}

公衆ロングgetTotal(){
合計を返します。
}

公共ボイドsetTotal(長い合計){
this.total =総。
}

公共int型getPages(){
リターンページ。
}

公共のボイドsetPages(int型ページ){
this.pagesの=ページ。
}

公衆リスト<T> GETLIST(){
戻り値のリスト。
}

公共ボイドセットリスト(一覧<T>のリスト){
this.list =リスト。
}

@deprecated
// FIRSTPAGEは1であり、この機能は、ナビゲーションバー、曖昧とで取得した最初のページである
公共のint getFirstPage(){
navigateFirstPageを返します;
}

@deprecated
公共ボイドsetFirstPage(INT FIRSTPAGE){
this.navigateFirstPage = FIRSTPAGE。
}

公共INT getPrePage(){
prePageを返します。
}

公共ボイドsetPrePage(prePageをINT){
this.prePage = prePage。
}

公共INT getNextPage(){
NEXTPAGEを返します。
}

公共ボイドsetNextPage(INT NEXTPAGE){
this.nextPage = NEXTPAGE。
}

@deprecated
。//くださいGetPages()関数は、あいまいな、ナビゲーションバーの上に取得し、最後の一つであり、最後の1を取得するための
公共int型getLastPageは(){
navigateLastPageを返します;
}

@deprecated
公共ボイドsetLastPage(INT LASTPAGE){
this.navigateLastPage = LASTPAGE。
}

パブリックブールisIsFirstPage(){
isFirstPageを返します。
}

公共ボイドsetIsFirstPage(ブールisFirstPage){
this.isFirstPage = isFirstPage。
}

パブリックブールisIsLastPage(){
isLastPageを返します。
}

公共ボイドsetIsLastPage(ブールisLastPage){
this.isLastPage = isLastPage。
}

パブリックブールisHasPreviousPage(){
hasPreviousPageを返します。
}

公共ボイドsetHasPreviousPage(ブールhasPreviousPage){
this.hasPreviousPage = hasPreviousPage。
}

パブリックブールisHasNextPage(){
hasNextPageを返します。
}

公共ボイドsetHasNextPage(ブールhasNextPage){
this.hasNextPage = hasNextPage。
}

公共INT getNavigatePages(){
戻りnavigatePages。
}

公共ボイドsetNavigatePages(INT navigatePages){
this.navigatePages = navigatePages。
}

公共のint [] getNavigatepageNums(){
戻りnavigatepageNums。
}

公共ボイドsetNavigatepageNums([] navigatepageNumsをINT){
this.navigatepageNums = navigatepageNums。
}

公共INT getNavigateFirstPage(){
navigateFirstPageを返します。
}

公共INT getNavigateLastPage(){
navigateLastPageを返します。
}

公共ボイドsetNavigateFirstPage(navigateFirstPageをINT){
this.navigateFirstPage = navigateFirstPage。
}

公共ボイドsetNavigateLastPage(navigateLastPageをINT){
this.navigateLastPage = navigateLastPage。
}

@Override
パブリック文字列のtoString(){
最終StringBufferのSB =新規のStringBuffer( "PageInfo {")。
sb.append( "PAGENUM =")(PAGENUM)を追加します。
sb.append( "pageSizeを=")(pageSizeを)を追加。
sb.append( "サイズ=")(サイズ)を追加します。
sb.append( "startRow属性=")(startRow属性)を追加します。
sb.append( "とendRow =")付加(とendRow)。
sb.append( "合計=")(合計)を追加。
sb.append( "頁=")(ページ)を追加します。;
sb.append( "リスト=")(リスト)を追加します。;
sb.append( "prePage =")付加(prePage)。
sb.append( "NEXTPAGE =")付加(NEXTPAGE)。
sb.append( "isFirstPage =")(isFirstPage)を追加します。
sb.append( "isLastPage =")。(isLastPage)付加;
sb.append( "hasPreviousPage =")(hasPreviousPage)を追加します。
sb.append( "hasNextPage =")(hasNextPage)を追加します。
sb.append( "navigatePages =")(navigatePages)を追加します。
sb.append( "navigateFirstPage =")付加(navigateFirstPage)。
sb.append( "navigateLastPage =")付加(navigateLastPage)。
sb.append( "navigatepageNumsの=")。
もし(navigatepageNums == nullの)sb.append( "ヌル")。
他{
sb.append( '[')。
以下のために(INT i = 0; iはnavigatepageNums.lengthを<; ++ I)
sb.append(I == 0 "": "?").append(navigatepageNums [I])。
sb.append( ']')。
}
sb.append( '}')。
sb.toStringを返します();
}
}

--------------------- 

おすすめ

転載: www.cnblogs.com/ly570/p/10995940.html