hibernate分页.docx

上传人:b****4 文档编号:24331791 上传时间:2023-05-26 格式:DOCX 页数:78 大小:44.83KB
下载 相关 举报
hibernate分页.docx_第1页
第1页 / 共78页
hibernate分页.docx_第2页
第2页 / 共78页
hibernate分页.docx_第3页
第3页 / 共78页
hibernate分页.docx_第4页
第4页 / 共78页
hibernate分页.docx_第5页
第5页 / 共78页
点击查看更多>>
下载资源
资源描述

hibernate分页.docx

《hibernate分页.docx》由会员分享,可在线阅读,更多相关《hibernate分页.docx(78页珍藏版)》请在冰豆网上搜索。

hibernate分页.docx

hibernate分页

学过Hibernate的程序员都知道,在Hibernate中为用户准备好了分页数据库的功能。

也就是两句话:

query.setFirstResult(pageStartRow);

query.setMaxResults(pageSize);

最近开始学Hibernate就写了一个分页的功能,很实用,实现了跳转到相应的页:

GO,和用户可选的页面显示数据的数量,与大家分享下,如果有不正确的地方请大家多多指出。

谢谢,就不多说废话了.....

首先我们准备一个Pager.java

viewplaincopytoclipboardprint?

01.packagecom.rao.entitys;

02.

03.importjava.util.concurrent.CountDownLatch;

04.

05.

06.publicclassPager{

07.privateintcurrentPage;//当前页

08.privateinttotalRows;//总行数

09.privateintpageSartRow;//每页开始的数据行

10.privateinttotalpages;//总页数

11.privateintpageSize;//每页显示的数据行数量

12.

13.publicintgetCurrentPage(){

14.returncurrentPage;

15.}

16.

17.publicvoidsetCurrentPage(intcurrentPage){

18.this.currentPage=currentPage;

19.}

20.

21.publicintgetTotalRows(){

22.returntotalRows;

23.}

24.

25.publicvoidsetTotalRows(inttotalRows){

26.this.totalRows=totalRows;

27.}

28.

29.publicintgetPageSartRow(){

30.returnpageSartRow;

31.}

32.

33.publicvoidsetPageSartRow(intpageSartRow){

34.this.pageSartRow=pageSartRow;

35.}

36.

37.publicintgetTotalpages(){

38.returntotalpages;

39.}

40.

41.publicvoidsetTotalpages(inttotalpages){

42.this.totalpages=totalpages;

43.}

44.

45.publicintgetPageSize(){

46.returnpageSize;

47.}

48.

49.publicvoidsetPageSize(intpageSize){

50.this.pageSize=pageSize;

51.}

52./*

53.*构造方法,初始化数据

54.*/

55.publicPager(inttotals,intsize){

56.this.totalRows=totals;

57.this.pageSize=size;

58.//计算总页数,

59.if(totalRows%pageSize!

=0){

60.this.totalpages=totalRows/pageSize+1;

61.}else{

62.this.totalpages=totalRows/pageSize;

63.}

64.//默认当前页为第一页

65.this.currentPage=1;

66.//默认数据的开始为0

67.this.pageSartRow=0;

68.}

69./**

70.*上一页

71.*/

72.publicvoidpreviousPage(){

73.//如果当前页小于等于1,返回

74.if(currentPage<=1){

75.return;

76.}

77.//当前页减一页

78.currentPage--;

79.//设置每页开始的数据行

80.pageSartRow=(currentPage-1)*pageSize;

81.}

82./**

83.*下一页

84.*/

85.publicvoidnextPage(){

86.//如果当前页大于总页数,设置当前页为最后一页

87.if(currentPage>=totalpages){

88.currentPage=totalpages;

89.}else{

90.//否则当前页加一页

91.currentPage++;

92.}

93.pageSartRow=(currentPage-1)*pageSize;

94.}

95./**

96.*首页

97.*/

98.publicvoidfirsPage(){

99.currentPage=1;

100.pageSartRow=(currentPage-1)*pageSize;

101.}

102./**

103.*尾页

104.*/

105.publicvoidlastPage(){

106.currentPage=totalpages;

107.pageSartRow=(currentPage-1)*pageSize;

108.}

109.

110./**

111.*Go

112.*/

113.publicvoidgoPage(intgo){

114.//当前页等于用户输入跳转的那一页

115.currentPage=go;

116.//如果用户输入的大于总页数,gotolastpage

117.if(currentPage>=totalpages){

118.currentPage=totalpages;

119.}elseif(currentPage<=1){

120.//ifinput<=1,gotofirstpage

121.currentPage=1;

122.}

123.pageSartRow=(currentPage-1)*pageSize;

124.}

125./**

126.*设置页面显示的数据条数

127.*@paramshow数据条数

128.*/

129.publicvoidshowcount(intshow){

130.setPageSize(show);

131.}

132.

133.}

packagecom.rao.entitys;

importjava.util.concurrent.CountDownLatch;

publicclassPager{

privateintcurrentPage;//当前页

privateinttotalRows;//总行数

privateintpageSartRow;//每页开始的数据行

privateinttotalpages;//总页数

privateintpageSize;//每页显示的数据行数量

publicintgetCurrentPage(){

returncurrentPage;

}

publicvoidsetCurrentPage(intcurrentPage){

this.currentPage=currentPage;

}

publicintgetTotalRows(){

returntotalRows;

}

publicvoidsetTotalRows(inttotalRows){

this.totalRows=totalRows;

}

publicintgetPageSartRow(){

returnpageSartRow;

}

publicvoidsetPageSartRow(intpageSartRow){

this.pageSartRow=pageSartRow;

}

publicintgetTotalpages(){

returntotalpages;

}

publicvoidsetTotalpages(inttotalpages){

this.totalpages=totalpages;

}

publicintgetPageSize(){

returnpageSize;

}

publicvoidsetPageSize(intpageSize){

this.pageSize=pageSize;

}

/*

*构造方法,初始化数据

*/

publicPager(inttotals,intsize){

this.totalRows=totals;

this.pageSize=size;

//计算总页数,

if(totalRows%pageSize!

=0){

this.totalpages=totalRows/pageSize+1;

}else{

this.totalpages=totalRows/pageSize;

}

//默认当前页为第一页

this.currentPage=1;

//默认数据的开始为0

this.pageSartRow=0;

}

/**

*上一页

*/

publicvoidpreviousPage(){

//如果当前页小于等于1,返回

if(currentPage<=1){

return;

}

//当前页减一页

currentPage--;

//设置每页开始的数据行

pageSartRow=(currentPage-1)*pageSize;

}

/**

*下一页

*/

publicvoidnextPage(){

//如果当前页大于总页数,设置当前页为最后一页

if(currentPage>=totalpages){

currentPage=totalpages;

}else{

//否则当前页加一页

currentPage++;

}

pageSartRow=(currentPage-1)*pageSize;

}

/**

*首页

*/

publicvoidfirsPage(){

currentPage=1;

pageSartRow=(currentPage-1)*pageSize;

}

/**

*尾页

*/

publicvoidlastPage(){

currentPage=totalpages;

pageSartRow=(currentPage-1)*pageSize;

}

/**

*Go

*/

publicvoidgoPage(intgo){

//当前页等于用户输入跳转的那一页

currentPage=go;

//如果用户输入的大于总页数,gotolastpage

if(currentPage>=totalpages){

currentPage=totalpages;

}elseif(currentPage<=1){

//ifinput<=1,gotofirstpage

currentPage=1;

}

pageSartRow=(currentPage-1)*pageSize;

}

/**

*设置页面显示的数据条数

*@paramshow数据条数

*/

publicvoidshowcount(intshow){

setPageSize(show);

}

}

然后我们需要一个工具类,用于获得一个Pger对象,在Action中使用:

PagerUtil.java

viewplaincopytoclipboardprint?

01.packagecom.rao.util;

02.

03.importjavax.servlet.http.HttpServletRequest;

04.

05.importorg.hibernate.Hibernate;

06.

07.importcom.rao.entitys.Pager;

08.

09./**

10.*@authorraozhiyong用于得到一个Pager的实例

11.*/

12.publicclassPagerUtil{

13.publicstaticPagergetPager(HttpServletRequestrequest,inttotalRows){

14.//得到页面传入的pagesize参数,也就是用户选中的值

15.StringpageSizesString=request.getParameter("showcount");

16.intpageSize;

17.//如果这个参数为空的话,说明是第一次浏览,初始化页面默认的pagesize为五条数据

18.if(pageSizesString==null){

19.pageSize=5;

20.}else{

21.//否则讲pageSize属性设置为用户选择的大小

22.pageSize=newInteger(pageSizesString);

23.}

24.//根据数据库中的数据总数和每页显示的pagesize,创建一个初始化的Pager对象

25.Pagerpager=newPager(totalRows,pageSize);

26.//得到页面传输近来的当前页

27.Stringcurrent=request.getParameter("current");

28.//如果传入的参数为空,则访问首页,默认当前页为第一页

29.//如果不为空就重新设置当前页面的值

30.if(current!

=null){

31.pager.setCurrentPage(newInteger(current));

32.}

33.//得到用户请求操作,首页,尾页,上一页,下一页

34.

35.Stringpagedo=request.getParameter("pagedo");

36.if(pagedo!

=null){

37.if("first".equalsIgnoreCase(pagedo)){

38.pager.firsPage();

39.}elseif("last".equalsIgnoreCase(pagedo)){

40.pager.lastPage();

41.}elseif("previous".equalsIgnoreCase(pagedo)){

42.pager.previousPage();

43.}elseif("next".equalsIgnoreCase(pagedo)){

44.pager.nextPage();

45.}elseif("go".equalsIgnoreCase(pagedo)){

46.//接受用户输入的跳转页

47.Stringgocount=request.getParameter("gocount");

48.//初始化为回到第一页(也许用户输入的数据合法,那么这时候我们应当默认回到第一页)

49.intgo=1;

50.try{

51.go=newInteger(gocount);

52.}catch(Exceptione){

53.e.printStackTrace();

54.}

55.pager.goPage(go);

56.}elseif("select".equalsIgnoreCase(pagedo)){

57.Stringshowcount=request.getParameter("showcount");

58.//初始化为每页5条数据

59.intsize=5;

60.try{

61.size=newInteger(showcount);

62.}catch(Exceptione){

63.e.printStackTrace();

64.}

65.pager.showcount(size);

66.}

67.}

68.returnpager;

69.}

70.

71.}

packagecom.rao.util;

importjavax.servlet.http.HttpServletRequest;

importorg.hibernate.Hibernate;

importcom.rao.entitys.Pager;

/**

*@authorraozhiyong用于得到一个Pager的实例

*/

publicclassPagerUtil{

publicstaticPagergetPager(HttpServletRequestrequest,inttotalRows){

//得到页面传入的pagesize参数,也就是用户选中的值

StringpageSizesString=request.getParameter("showcount");

intpageSize;

//如果这个参数为空的话,说明是第一次浏览,初始化页面默认的pagesize为五条数据

if(pageSizesString==null){

pageSize=5;

}else{

//否则讲pageSize属性设置为用户选择的大小

pageSize=newInteger(pageSizesString);

}

//根据数据库中的数据总数和每页显示的pagesize,创建一个初始化的Pager对象

Pagerpager=newPager(totalRows,pageSize);

//得到页面传输近来的当前页

Stringcurrent=request.getParameter("current");

//如果传入的参数为空,则访问首页,默认当前页为第一页

//如果不为空就重新设置当前页面的值

if(current!

=null){

pager.setCurrentPage(newInteger(current));

}

//得到用户请求操作,首页,尾页,上一页,下一页

Stringpagedo=request.getParameter("pagedo");

if(pagedo!

=null){

if("first".equalsIgnoreCase(pagedo)){

pager.firsPage();

}elseif("last".equalsIgnoreCase(pagedo)){

pager.lastPage();

}elseif("previous".equalsIgnoreCase(pagedo)){

pager.previousPage();

}elseif("next".equalsIgnoreCase(pagedo)){

pager.nextPage();

}elseif("go".equalsIgnoreCase(pagedo)){

//接受用户输入的跳转页

Stringgocount=request.getParameter("gocount");

//初始化为回到第一页(也许用户输入的数据合法,那么这时候我们应当默认回到第一页)

intgo=1;

try{

go=newInteger(gocount);

}catch(Exceptione){

e.printStackTrace();

}

pager.goPage(go);

}elseif("select".equalsIgnoreCase(pagedo)){

Stringshowcount=request.getParameter("showcount");

//初始化为每页5条数据

intsize=5;

try{

size=newInteger(showcount);

}catch(Exceptione){

e.printStackTrace();

}

pager.showcount(size);

}

}

returnpager;

}

}

Struts中Action的代码如下:

viewplaincopytoclipboardprint?

01.publicActionForwardall(ActionMappingmapping,ActionFormform,

02.HttpServletRequestrequest,HttpServletResponseresponse){

03.System.out.println("=========all========

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1