hibernate分页.docx
- 文档编号:24331791
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:78
- 大小:44.83KB
hibernate分页.docx
《hibernate分页.docx》由会员分享,可在线阅读,更多相关《hibernate分页.docx(78页珍藏版)》请在冰豆网上搜索。
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========
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- hibernate 分页
![提示](https://static.bdocx.com/images/bang_tan.gif)