Pager类:


package
com.zeroidea.common;



public
class
Pager
{

private
int
totalRows;
//
总行数
private
int
pageSize;
//
单页数据项
private
int
currentPage;
//
当前页号
private
int
totalPages;
//
总页数
private
int
startRows;
//
当前页在数据库中记录位置


public
Pager()
{

}


public
Pager(
int
totalRows)
{
//
指定总行数据
this
.setPageSize(
10
);
//
每页 10条数据
this
.setTotalRows(totalRows);


int
pages
=
totalRows
/
pageSize;


if
((totalRows
%
pageSize)
>
0
)
{

pages
++
;

}
this
.setTotalPages(pages);


this
.setStartRows(
0
);

this
.setCurrentPage(
1
);

}


/** */
/**
*
@return
the currentPage

*/
public
int
getCurrentPage()
{

return
currentPage;

}


/** */
/**
*
@param
currentPage the currentPage to set

*/
public
void
setCurrentPage(
int
currentPage)
{

this
.currentPage
=
currentPage;

}


/** */
/**
*
@return
the pageSize

*/
public
int
getPageSize()
{

return
pageSize;

}


/** */
/**
*
@param
pageSize the pageSize to set

*/
public
void
setPageSize(
int
pageSize)
{

this
.pageSize
=
pageSize;

}


/** */
/**
*
@return
the startRows

*/
public
int
getStartRows()
{

return
startRows;

}


/** */
/**
*
@param
startRows the startRows to set

*/
public
void
setStartRows(
int
startRows)
{

this
.startRows
=
startRows;

}


/** */
/**
*
@return
the totalPages

*/
public
int
getTotalPages()
{

return
totalPages;

}


/** */
/**
*
@param
totalPages the totalPages to set

*/
public
void
setTotalPages(
int
totalPages)
{

this
.totalPages
=
totalPages;

}


/** */
/**
*
@return
the totalRows

*/
public
int
getTotalRows()
{

return
totalRows;

}


/** */
/**
*
@param
totalRows the totalRows to set

*/
public
void
setTotalRows(
int
totalRows)
{

this
.totalRows
=
totalRows;

}


/** */
/**
* 第一页

*/
public
void
fristPage()
{

this
.setCurrentPage(
1
);

this
.setStartRows(
0
);

}


/** */
/**
* 前一页

*/
public
void
previousPage()
{

int
nowPage
=
this
.getCurrentPage();


if
(nowPage
==
1
)
{

return
;

}
this
.setCurrentPage(
--
nowPage);

this
.setStartRows((nowPage
-
1
)
*
this
.getPageSize());

}


/** */
/**
* 后一页

*/
public
void
nextPage()
{

int
nowPage
=
this
.getCurrentPage();


if
(nowPage
==
this
.getTotalPages())
{

this
.lastPage();

return
;

}
this
.setCurrentPage(nowPage
+
1
);

this
.setStartRows(nowPage
*
this
.getPageSize());

}


/** */
/**
* 最后一页

*/
public
void
lastPage()
{

this
.setCurrentPage(
this
.getTotalPages());

this
.setStartRows((
this
.getTotalPages()
-
1
)
*
this
.getPageSize());

}


/** */
/**
* 刷新页

*
@param
currentPage

*/
public
void
refreshPage(
int
currentPage)
{

this
.setCurrentPage(currentPage);

this
.setStartRows((currentPage
-
1
)
*
this
.getPageSize());


if
(currentPage
>
this
.getTotalPages())
{

this
.lastPage();

}
}
}


数据查询:




/** */
/**
* 取得总数据行 :有更简单的方法请分享

*/
public
int
selectDataRows()
{

int
rows
=
0
;

List list
=
null
;

Session session
=
null
;

Transaction transaction
=
null
;

Query query
=
null
;


try
{

session
=
SessionFactory.currentSession();

transaction
=
session.beginTransaction();

query
=
session

.createQuery(
"
select msg from Msg as msg
"
);

list
=
query.list();

rows
=
list.size();

transaction.commit();

session.close();


}
catch
(Exception excp)
{

session.close();

}

return
rows;

}





/** */
/**
* 分页查询数据

*

*
@param
pager

*
@return
0 1 0: Success 1: Fail

*/
public
List selectData(Pager pager)
{

List list
=
null
;

Session session
=
null
;

Transaction transaction
=
null
;

Query query
=
null
;



try
{

session
=
SessionFactory.currentSession();

transaction
=
session.beginTransaction();

query
=
session.createQuery(
"
select msg from Msg as msg order by msg.msgId desc
"
);

query.setFirstResult(pager.getStartRows());
//
设置起始行
query.setMaxResults(pager.getPageSize());
//
设置取数据行数
list
=
query.list();

transaction.commit();

session.close();


}
catch
(Exception excp)
{

session.close();

}
return
list;

}



Action 控制:



/** */
/**
* 查询 方法,,按分页查询

*

*
@param
mapping

*
@param
form

*
@param
request

*
@param
response

*
@return
*/
public
void
selectData(ActionMapping mapping, ActionForm form,


HttpServletRequest request, HttpServletResponse response)
{

List list
=
null
;

int
currentPage
=
1
;

MsgForm msgForm
=
(MsgForm) form;


String pageMethod
=
request.getParameter(
"
pageMethod
"
);
//
存放请求页方法
String currentPageTemp
=
request.getParameter(
"
currentPage
"
);
//
存放当前页

OperTable operTable
=
new
OperTable();
//
操作表类
Pager pager
=
new
Pager(operTable.selectDataRows());
//
页面控制类



if
(currentPageTemp
==
null
)
{

pager.setCurrentPage(
1
);


}
else
{

currentPage
=
Integer.parseInt(currentPageTemp);

}

pager.setCurrentPage(currentPage);



if
(pageMethod
==
null
)
{

pager.fristPage();
//
到首页
System.out.println(
"
首页
"
);


}
else
{


if
(pageMethod.equals(
"
previousPage
"
))
{

pager.previousPage();
//
到前一页
System.out.println(
"
前一页
"
);


}
else
if
(pageMethod.equals(
"
nextPage
"
))
{

pager.nextPage();
//
到后一页
System.out.println(
"
后一页
"
);


}
else
if
(pageMethod.equals(
"
lastPage
"
))
{

pager.lastPage();
//
到尾页
System.out.println(
"
尾页
"
);


}
else
if
(pageMethod.equals(
"
refreshPage
"
))
{

pager.refreshPage(currentPage);

System.out.println(currentPage);

System.out.println(
"
刷新页
"
);


}
else
{

pager.fristPage();
//
到首页
System.out.println(
"
首页
"
);

}
}

request.setAttribute(
"
pager
"
, pager);

request.setAttribute(
"
msgdata
"
, list);

request.setAttribute(
"
info
"
,
"
已查询数据
"
);

msgForm.reset(mapping, request);

}


JSP显示分页: href这样用:


<
logic:present name
=
"
pager
"
>
<
a href
=
"
msg.do?method=select&pageMethod=fristPage¤tPage=<bean:write name='pager' property='currentPage'/>
"
>
首页
</
a
>
<
a href
=
"
msg.do?method=select&pageMethod=previousPage¤tPage=<bean:write name='pager' property='currentPage'/>
"
>
前一页
</
a
>
<
a href
=
"
msg.do?method=select&pageMethod=nextPage¤tPage=<bean:write name='pager' property='currentPage'/>
"
>
后一页
</
a
>
<
a href
=
"
msg.do?method=select&pageMethod=lastPage¤tPage=<bean:write name='pager' property='currentPage'/>
"
>
尾页
</
a
>
共有
<
span
class
=
"
font-normal-red
"
><
bean:write name
=
"
pager
"
property
=
"
totalRows
"
/></
span
>
条记录,当前第
<
span
class
=
"
font-normal-red
"
><
bean:write name
=
"
pager
"
property
=
"
currentPage
"
/></
span
>
页,共有
<
span
class
=
"
font-normal-red
"
><
bean:write name
=
"
pager
"
property
=
"
totalPages
"
/></
span
>
页

</
logic:present
>

<
html:link
>
这样用


<
logic:present name
=
"
pager
"
>
<
html:link page
=
"
/msg.do?method=select&pageMethod=fristPage
"
paramId
=
"
currentPage
"
paramName
=
"
pager
"
paramProperty
=
"
currentPage
"
>
首页
</
html:link
>
<
html:link page
=
"
/msg.do?method=select&pageMethod=previousPage
"
paramId
=
"
currentPage
"
paramName
=
"
pager
"
paramProperty
=
"
currentPage
"
>
前一页
</
html:link
>
<
html:link page
=
"
/msg.do?method=select&pageMethod=nextPage
"
paramId
=
"
currentPage
"
paramName
=
"
pager
"
paramProperty
=
"
currentPage
"
>
下一页
</
html:link
>
<
html:link page
=
"
/msg.do?method=select&pageMethod=lastPage
"
paramId
=
"
currentPage
"
paramName
=
"
pager
"
paramProperty
=
"
currentPage
"
>
尾页
</
html:link
>
共有

<
span
class
=
"
font-normal-red
"
><
bean:write name
=
"
pager
"
property
=
"
totalRows
"
/>
</
span
>
条记录,当前第
<
span
class
=
"
font-normal-red
"
><
bean:write name
=
"
pager
"
property
=
"
currentPage
"
/>
</
span
>
页,共有
<
span
class
=
"
font-normal-red
"
><
bean:write name
=
"
pager
"
property
=
"
totalPages
"
/>
</
span
>
页

</
logic:present
>
posted on 2006-11-30 16:26
一手的小窝窝 阅读(166)
评论(0) 编辑 收藏 所属分类:
JAVA