来看paginationCode(hibenagte分页)
由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景,于是改造了Oak,importorg.apache.log4j.Logger;
importjava.util.List;
/**
*@authorPietroPolsinellippolsinelli@open-lab.com
*/
publicinterfacePage{
booleanisFirstPage();
booleanisLastPage();
booleanhasNextPage();
booleanhasPreviousPage();
intgetLastPageNumber();
ListgetThisPageElements();
LoggergetLogger();
intgetTotalNumberOfElements();
intgetThisPageFirstElementNumber();
intgetThisPageLastElementNumber();
intgetNextPageNumber();
intgetPreviousPageNumber();
intgetPageSize();
intgetPageNumber();
}
importnet.sf.hibernate.*;
importnet.sf.hibernate.impl.SQLQueryImpl;
importnet.sf.hibernate.persister.EntityPersister;
importorg.apache.log4j.Logger;
importorg.jblooming.PlatformRuntimeException;
importorg.jblooming.persistence.hibernate.HibernateFactory;
importorg.jblooming.tracer.Tracer;
importorg.jblooming.waf.settings.ApplicationState;
importjava.util.HashSet;
importjava.util.List;
importjava.util.Set;
importjava.sql.SQLException;
importjava.sql.Connection;
importjava.sql.ResultSet;
/**
*@authorPietroPolsinellippolsinelli@open-lab.com
*/
publicclassHibernatePageimplementsPage{
protectedListelements;
protectedintpageSize;
protectedintpageNumber;
protectedinttotalElements=0;
publicstaticSetjdbcClassesSupportingScrollCursors=newHashSet();
privateScrollableResultsscrollableResults;
privateHibernatePage(intpageNumber,intpageSize){
this.pageNumber=pageNumber;
this.pageSize=pageSize;
}
publicbooleanisFirstPage(){
returngetPageNumber()==0;
}
publicbooleanisLastPage(){
returngetPageNumber()>=getLastPageNumber();
}
publicbooleanhasNextPage(){
returnelements.size()>getPageSize();
}
publicbooleanhasPreviousPage(){
returngetPageNumber()>0;
}
publicintgetLastPageNumber(){
doubletotalResults=
newInteger(getTotalNumberOfElements()).doubleValue();
returnnewDouble(Math.floor(totalResults/getPageSize())).intValue();
}
publicListgetThisPageElements(){
/*
*SinceweretrievedonemorethanthespecifiedpageSizewhenthe
*classwasconstructed,wenowtrimitdowntothepageSizeifanext
*pageexists.
*/
returnhasNextPage()?elements.subList(0,getPageSize()):elements;
}
publicLoggergetLogger(){
returnTracer.hibernateLogger;
}
publicintgetTotalNumberOfElements(){
returntotalElements;
}
publicintgetThisPageFirstElementNumber(){
returngetPageNumber()*getPageSize()+1;
}
publicintgetThisPageLastElementNumber(){
intfullPage=getThisPageFirstElementNumber()+getPageSize()-1;
returngetTotalNumberOfElements()<fullPage?
getTotalNumberOfElements():
fullPage;
}
publicintgetNextPageNumber(){
returngetPageNumber()+1;
}
publicintgetPreviousPageNumber(){
returngetPageNumber()-1;
}
publicintgetPageSize(){
returnpageSize;
}
publicintgetPageNumber(){
returnpageNumber;
}
publicstaticHibernatePagegetHibernatePageInstance(Queryquery,intpageNumber,intpageSize){
returngetHibernatePageInstance(query,pageNumber,pageSize,ApplicationState.platformConfiguration.driver_class);
}
publicstaticHibernatePagegetHibernatePageInstance(Queryquery,
intpageNumber,
intpageSize,
StringdriverClass) {
if(jdbcClassesSupportingScrollCursors.contains(driverClass))
returnHibernatePage.getScrollPageInstanceWithTotalByScroll(query,pageNumber,pageSize);
else
returnHibernatePage.getScrollPageInstanceWithTotalByList(query,pageNumber,pageSize);
}
/**
*ConstructanewHibernatePage.HibernatePagenumbersarezero-basedsothe
*firstpageispage0.
*
*@paramquery theHibernateQuery
*@parampageNumberthepagenumber(zero-based);
* ifInteger.MAX_VALUEwillreturnthelastpageforthequery
*@parampageSize thenumberofresultstodisplayonthepage
*/
protectedstaticHibernatePagegetScrollPageInstanceWithTotalByScroll(Queryquery,intpageNumber,intpageSize){
HibernatePagesp=newHibernatePage(pageNumber,pageSize);
try{
sp.scrollableResults=query.scroll(ScrollMode.SCROLL_SENSITIVE);
sp.scrollableResults.last();
sp.totalElements=sp.scrollableResults.getRowNumber();
sp.determineElements(query);
}catch(HibernateExceptione){
sp.getLogger().error("FailedtocreateScrollPagebygetScrollPageInstanceWithTotalByScroll:"+e.getMessage());
thrownewPlatformRuntimeException(e);
}
returnsp;
}
/**
*ConstructanewHibernatePage.HibernatePagenumbersarezero-basedsothe
*firstpageispage0.
*
*@paramquery theHibernateQuery
*@parampageNumberthepagenumber(zero-based);
* ifInteger.MAX_VALUEwillreturnthelastpageforthequery
*@parampageSize thenumberofresultstodisplayonthepage
*/
protectedstaticHibernatePagegetScrollPageInstanceWithTotalByList(Queryquery,intpageNumber,intpageSize){
HibernatePagesp=newHibernatePage(pageNumber,pageSize);
try{
sp.scrollableResults=query.scroll(ScrollMode.FORWARD_ONLY);
sp.totalElements=sp.calculateTotalElementsByList(query);
sp.determineElements(query);
}catch(HibernateExceptione){
sp.getLogger().error("FailedtocreateScrollPagebygetScrollPageInstanceWithTotalByQuery:"+e.getMessage());
thrownewPlatformRuntimeException(e);
}
returnsp;
}
privatevoiddetermineElements(Queryquery)throwsHibernateException{
if(Integer.MAX_VALUE==this.pageNumber)
this.pageNumber=(getTotalNumberOfElements()/this.pageSize);
/**
*todo:thisnomoremakessense,asweknowthetotalnumberofelements
*
*WesetthemaxresultstoonemorethanthespecfiedpageSizeto
*determineifanymoreresultsexist(i.e.ifthereisanextpage
*todisplay).TheresultsetistrimmeddowntojustthepageSize
*beforebeingdisplayedlater(ingetThisPageElements()).
*/
elements=query.setFirstResult(this.pageNumber*this.pageSize).setMaxResults(this.pageSize+1).list();
}
privateintcalculateTotalElementsByList(Queryquery)throwsHibernateException{
returnquery.list().size();
}
}
packageorg.jblooming.page;
importorg.apache.log4j.Logger;
importorg.jblooming.tracer.Tracer;
importjava.util.List;
/**
*@authorPietroPolsinellippolsinelli@open-lab.com
*/
publicclassListPageimplementsPage{
privateListelements;
privateintpageSize;
privateintpageNumber;
/**
*ConstructanewListPage.ListPagenumbersarezero-based,sothe
*firstpageispage0.
*
*@parampageNumberthepagenumber(zero-based);
* ifInteger.MAX_VALUEwillreturnthelastpageforthequery
*@parampageSize thenumberofresultstodisplayonthepage
*/
publicListPage(Listelements,intpageNumber,intpageSize){
this.elements=elements;
this.pageSize=pageSize;
this.pageNumber=pageNumber;
if(Integer.MAX_VALUE==this.pageNumber)
this.pageNumber=(getTotalNumberOfElements()/this.pageSize);
}
publicbooleanisFirstPage(){
returngetPageNumber()==0;
}
publicbooleanisLastPage(){
returngetPageNumber()>=getLastPageNumber();
}
publicbooleanhasNextPage(){
return((getPageNumber()+1)*getPageSize())<
(getTotalNumberOfElements()+1);
}
publicbooleanhasPreviousPage(){
returngetPageNumber()>0;
}
publicintgetLastPageNumber(){
/*
*WeusetheMath.floor()methodbecausepagenumbersarezero-based
*(i.e.thefirstpageispage0).
*/
doubletotalResults=newInteger(getTotalNumberOfElements()).doubleValue();
returnnewDouble(Math.floor(totalResults/getPageSize())).intValue();
}
publicListgetThisPageElements(){
/*
*SinceweretrievedonemorethanthespecifiedpageSizewhenthe
*classwasconstructed,wenowtrimitdowntothepageSizeifanext
*pageexists.
*/
finalintstart=getPageNumber()*getPageSize();
returnelements.subList(Math.min(start,getTotalNumberOfElements()+1),
Math.min(start+getPageSize(),getTotalNumberOfElements()+1));
}
publicLoggergetLogger(){
returnTracer.hibernateLogger;
}
/**
*thisis0-based,differentlyfromlist.size();
*/
publicintgetTotalNumberOfElements(){
returnelements.size()-1;
}
publicintgetThisPageFirstElementNumber(){
returngetPageNumber()*getPageSize()+1;
}
publicintgetThisPageLastElementNumber(){
intfullPage=getThisPageFirstElementNumber()+getPageSize()-1;
returngetTotalNumberOfElements()<fullPage?
getTotalNumberOfElements():
fullPage;
}
publicintgetNextPageNumber(){
returngetPageNumber()+1;
}
publicintgetPreviousPageNumber(){
returngetPageNumber()-1;
}
publicintgetPageSize(){
returnpageSize;
}
publicintgetPageNumber(){
returnpageNumber;
}
}
主要缺点就是:速度比较慢,没有C和C++快 Java是一种计算机编程语言,拥有跨平台、面向对java 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! 还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。 一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。 自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。 J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。 Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
页:
[1]