MyHibernate分页标签使用文档.docx
《MyHibernate分页标签使用文档.docx》由会员分享,可在线阅读,更多相关《MyHibernate分页标签使用文档.docx(17页珍藏版)》请在冰豆网上搜索。
MyHibernate分页标签使用文档
MyHibernate3分页标签
(1)—pageController2分页核心控制器
packagezjnu.soft.util;
//策略:
查多少分多少
publicclasspageController2{
privateintcurrentPageIndex;//当前页码
privateintcountPerpage;//每页多少条记录
privateintpageCount;//页数
privateintrecordCount;//记录总条数
privateintprePageIndex;//上一页序号
privateintnextPageIndex;//下一页序号
privatebooleanfirstPage;//是否为第一页
privatebooleanlastPage;//是否为最后一页
privateintperP;//每页显示页码数
privateintcurrentG;//当前组号
privateintallG;//共有组数
publicvoidsetRecordCount(intrecordCount){
this.recordCount=recordCount;//一共有多少个记录
if(recordCount%countPerpage==0){
pageCount=recordCount/countPerpage;
}else{
pageCount=recordCount/countPerpage+1;
}
this.allG=(recordCount%(perP*countPerpage)==0)?
(recordCount/(perP*countPerpage))
:
(recordCount/(perP*countPerpage)+1);//获取一共有多少组
}
@SuppressWarnings("unchecked")
publicvoidsetCurrentPageIndex(intcurrentPageIndex){//设置当前页码
this.currentPageIndex=currentPageIndex;
if(this.currentPageIndex>this.pageCount){
currentPageIndex=this.pageCount;
this.currentPageIndex=currentPageIndex;
}
prePageIndex=currentPageIndex-1;
nextPageIndex=currentPageIndex+1;
if(currentPageIndex==1){
firstPage=true;
}else{
firstPage=false;
}
if(currentPageIndex==pageCount){
lastPage=true;
}else{
lastPage=false;
}
this.currentG=(currentPageIndex%perP==0)?
(currentPageIndex/perP)
:
(currentPageIndex/perP+1);//当前是第几组
}
//省略剩余的get(),set()函数
}
MyHibernate3分页标签
(2)—pageController2分页管理器
packagezjnu.soft.util;
importjava.util.List;
importjavax.servlet.http.HttpServletRequest;
publicclasspageManage2{
privatepageController2pc;
publicpageController2getPc(){
returnpc;
}
publicvoidsetPc(pageController2pc){
this.pc=pc;
}
@SuppressWarnings({"unchecked"})
publicvoidsetPageIndex(StringPageIndex,IntegerrecordCount,Listlist,
HttpServletRequestrequest,IntegercountPerpage,IntegerperP){
if(list!
=null&&list.size()!
=0){
Stringstr=PageIndex;
if(str==null)//初始化
{
str="1";
}
pc=newpageController2();
pc.setCountPerpage(countPerpage);
pc.setPerP(perP);
pc.setRecordCount(recordCount);
intcurrentPageIndex=Integer.parseInt(str);//得到当前页码
pc.setCurrentPageIndex(currentPageIndex);//设置当前页码
//将分页控制器至于request中便于标签获取分页信息
request.setAttribute("pc",pc);
}
}
}
MyHibernate3分页标签(3)—displayTag2分页标签生成类
WEB-INF\myDisplayTag.tld
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEtaglibPUBLIC"-//SunMicrosystems,Inc.//DTDJSPTagLibrary1.1//EN""
1.0
1.1
myDisplayTag
displayTag2
zjnu.soft.util.displayTag2
empty
gowhich
true
true
packagezjnu.soft.util;
importjava.io.IOException;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.jsp.JspException;
importjavax.servlet.jsp.JspWriter;
importjavax.servlet.jsp.tagext.TagSupport;
importzjnu.soft.util.pageController2;
publicclassdisplayTag2extendsTagSupport{
privateStringgowhich;//去哪去list
privatepageController2pc;//pc控制器
//省略get()set()
@Override
publicintdoStartTag()throwsJspException{
try{
getmenu();
}catch(IOExceptione){
e.printStackTrace();
}
returnSKIP_BODY;
}
publicvoidgetmenu()throwsIOException{
booleanflag=false;//没有?
if(gowhich.indexOf("?
")>0){
flag=true;//有?
boardId=1后加&
}
HttpServletRequestrequest=(HttpServletRequest)pageContext
.getRequest();
this.pc=(pageController2)request.getAttribute("pc");
if(pc!
=null)//如果pc不为空时候才能显示分页导航条
{
StringdisplayTag="";
IntegercurrentPageIndex=pc.getCurrentPageIndex();//当前页面
IntegerpageCount=pc.getPageCount();
booleanisfirst=pc.isFirstPage();
booleanislast=pc.isLastPage();
Integernext=pc.getNextPageIndex();
Integerpre=pc.getPrePageIndex();
Integerlast=pc.getRecordCount();
IntegercurrentG=pc.getCurrentG();
IntegerperP=pc.getPerP();
IntegerlastG=pc.getAllG();
intstart=(currentG-1)*perP+1;//获取起始页码
//开始制作标签
if(currentG>1){
if(flag==false){
displayTag+="[PageIndex="
+(start-perP)+"'>上"+perP+"页";
}else{
displayTag+="[+(start-perP)+"'>上"+perP+"页";
}
}else{
displayTag+="[上"+perP+"页";
}
if(!
isfirst){
if(flag==false){
displayTag+="+"?
PageIndex=1'>首页";
}else{
displayTag+="+"&PageIndex=1'>首页";
}
}else{
displayTag+="首页";
}
if(!
isfirst){
if(flag==false){
displayTag+="PageIndex="
+pre+"'>上一页|";
}else{
displayTag+="+pre+"'>上一页|";
}
}else{
displayTag+="上一页|";
}
//intstart=(currentG-1)*perP+1;//获取起始页码
for(inti=0;((i//通过循环依次输出当前组中的页码
if((start+i)==currentPageIndex)
displayTag+=(start+i)+"";
else{
if(flag==false){
displayTag+="+"?
PageIndex="+(start+i)+"'>"
+(start+i)+"";
}else{
displayTag+="+"&PageIndex="+(start+i)+"'>"
+(start+i)+"";
}
}
}
if(!
islast){
if(flag==false){
displayTag+="|PageIndex="
+next+"'>下一页";
}else{
displayTag+="|+next+"'>下一页";
}
}else{
displayTag+="|下一页";
}
if(!
islast){
if(flag==false){
displayTag+="PageIndex="
+pageCount+"'>尾页";
}else{
displayTag+="+pageCount+"'>尾页";
}
}else{
displayTag+="尾页";
}
if(currentGSystem.out.println(currentG+"|"+lastG);
if(flag==false){
displayTag+="PageIndex="
+(start+perP)+"'>下"+perP+"页";
}else{
displayTag+="+(start+perP)+"'>下"+perP+"页";
}
}else{
displayTag+="下"+perP+"页";
}
displayTag+="(第"+currentPageIndex+"页/";
displayTag+="共"+pageCount+"页,共"+last+"条记录)";
displayTag+="";
displayTag+="]";
displayTag+="+this.gowhich+"'/>";
displayTag+="+pageCount+"'/>";
JspWriterjspwriter=pageContext.getOut();
jspwriter.write(displayTag);
}
}
}
MyHibernate3分页标签(4)—baseDao分页查询部分
@SuppressWarnings("unchecked")
//标准分页
publicQueryResultgetScrollData(ClassentityClass,
LinkedHashMapwhereCon,
LinkedHashMapwhereLike,intfirstindex,
intmaxresult,LinkedHashMaporderBy){
QueryResultqr=newQueryResult();//查询结果对象记录着返回结果集List和结果集大小
StringentitName=entityClass.getName();
Stringarg0="from"
+entitName
+"o"
+((whereCon==null||whereCon.size()==0)?
"":
"where"
+getWhereCon(whereCon));
if(whereCon==null||whereCon.size()==0){
arg0+=((whereLike==null||whereLike.size()==0)?
""
:
"where"+getWhereLike(whereLike));
}else{
arg0+=((whereLike==null||whereLike.size()==0)?
""
:
"and"+getWhereLike(whereLike));
}
Stringarg1=arg0+this.buildorderby(orderBy);
query=this.getSession().createQuery(arg1);
if(whereCon!
=null&&whereCon.size()>0){
setQueryparams((org.hibernate.Query)query,whereCon);//如果有=条件则加参数列表
}
if(firstindex!
=-1&&maxresult!
=-1){
query.setFirstResult(firstindex);
query.setMaxResults(maxresult);
}
qr.setResultlist(query.list());//得到查询结果返回list
query=this.getSession().createQuery("selectcount(o)"+arg0);
if(whereCon!
=null&&whereCon.size()>0){
setQueryparams(query,whereCon);
}
qr.setTotalrecord((Long)query.list().get(0));//得到查询结果得到记录数总数
returnqr;
}
//自定义分页查询
publicQueryResultgetScrollData(Stringhql,StringhqlCount,
intfirstindex,intmaxresult){
QueryResultqr=newQueryResult();
query=this.getSession().createQuery(hql);
if(firstindex!
=-1&&maxresult!
=-1){
query.setFirstResult(firstindex);
query.setMaxResults(maxresult);
}
qr.setResultlist(query.list());//得到查询结果返回list
query=this.getSession().createQuery(hqlCount);
qr.setTotalrecord((Long)query.list().get(0));//得到查询结果得到记录数总数
returnqr;
}
MyHibernate3分页标签(5)—action调用及html显示
privateHttpServletRequestrequest;
privateHttpServletResponseresponse;
publicHttpServletRequestgetRequest(){
returnrequest;