`
守望者
  • 浏览: 54561 次
  • 来自: ...
社区版块
存档分类
最新评论

一个通用的分页方法

    博客分类:
  • ssh
阅读更多

一个通用的分页方法,不仅在数据库操作上分页了还在上层也做了分页.理解了这个就很容易理解其他框架的分页了.

java 代码
  1. import  java.math. * ;   
  2.   
  3. public   class  Pager   {   
  4.      private   int  totalRows;  // 总行数    
  5.      private   int  pageSize=30 ;  // 每页显示的行数    
  6.      private   int  currentPage;  // 当前页号    
  7.      private   int  totalPages;  // 总页数    
  8.      private   int  startRow;  // 当前页在数据库中的起始行    
  9.        
  10.     public  Pager()   {   
  11.            
  12.    }    
  13.       
  14.     public  Pager( int  _totalRows)   {   
  15.        totalRows=_totalRows;   
  16.        totalPages=totalRows / pageSize;   
  17.         int  mod=totalRows % pageSize;   
  18.         if (mod > 0 )  {   
  19.            totalPages ++ ;   
  20.        }    
  21.        currentPage=1 ;   
  22.        startRow=0 ;   
  23.    }    
  24.       
  25.     public   int  getStartRow()   {   
  26.         return  startRow;   
  27.    }    
  28.      public   int  getTotalPages()   {   
  29.         return  totalPages;   
  30.    }    
  31.      public   int  getCurrentPage()   {   
  32.         return  currentPage;   
  33.    }    
  34.      public   int  getPageSize()   {   
  35.         return  pageSize;   
  36.    }    
  37.      public   void  setTotalRows( int  totalRows)   {   
  38.         this.totalRows  =  totalRows;   
  39.    }    
  40.      public   void  setStartRow( int  startRow)   {   
  41.         this.startRow  =  startRow;   
  42.    }    
  43.      public   void  setTotalPages( int  totalPages)   {   
  44.         this.totalPages  =  totalPages;   
  45.    }    
  46.      public   void  setCurrentPage( int  currentPage)   {   
  47.         this.currentPage  =  currentPage;   
  48.    }    
  49.      public   void  setPageSize( int  pageSize)   {   
  50.         this.pageSize  =  pageSize;   
  51.    }    
  52.      public   int  getTotalRows()   {   
  53.         return  totalRows;   
  54.    }    
  55.      public   void  first()   {   
  56.        currentPage  =   1 ;   
  57.        startRow  =   0 ;   
  58.    }    
  59.      public   void  previous()   {   
  60.         if  (currentPage  ==   1 )   {   
  61.             return ;   
  62.        }    
  63.        currentPage -- ;   
  64.        startRow =(currentPage-1)*pageSize;   
  65.    }    
  66.      public   void  next()   {   
  67.         if  (currentPage<totalPages)   {   
  68.            currentPage ++ ;   
  69.        }    
  70.        startRow=(currentPage-1)*pageSize;   
  71.    }    
  72.      public void last()   {   
  73.        currentPage=totalPages;   
  74.        startRow=(currentPage-1 )*pageSize;   
  75.    }    
  76.      public void refresh(int  _currentPage)   {   
  77.        currentPage=_currentPage;   
  78.         if  (currentPage>totalPages)   {   
  79.            last();   
  80.        }    
  81.    }    
  82. }    
  83.   

 操作pager的PagerService

java 代码
  1. package com.game.common;   
  2.   
  3. public   class  PagerService   {   
  4.        
  5.        
  6.        
  7.     public  Pager getPager(String currentPage,String pagerMethod, int  totalRows)   {   
  8.         //     定义pager对象,用于传到页面    
  9.         Pager pager= new  Pager(totalRows);   
  10.         //     如果当前页号为空,表示为首次查询该页   
  11.         //     如果不为空,则刷新pager对象,输入当前页号等信息    
  12.           if  (currentPage!=null )   {   
  13.            pager.refresh(Integer.parseInt(currentPage));   
  14.        }    
  15.         //     获取当前执行的方法,首页,前一页,后一页,尾页。    
  16.           if  (pagerMethod!=null )   {   
  17.             if  (pagerMethod.equals("first"))   {   
  18.                pager.first();   
  19.            }   else   if  (pagerMethod.equals("previous"))   {   
  20.                pager.previous();   
  21.            }   else   if  (pagerMethod.equals("next"))   {   
  22.                pager.next();   
  23.            }   else   if  (pagerMethod.equals("last"))   {   
  24.                pager.last();   
  25.            }    
  26.        }    
  27.         return  pager;   
  28.    }    
  29. }    
  30.   
java 代码
  1. public class ProductsDaoImp extends HibernateDaoSupport implements ProductsDao {   
  2.   
  3.     public int getRows() {   
  4.            
  5.         String sql = " FROM Products ORDER BY gameNameCn " ;   
  6.         List list = this .getHibernateTemplate().find(sql);   
  7.          return  list.size();   
  8.   
  9.     }   
  10.   
  11.     public void addProduct(Products pd) {   
  12.         this.getHibernateTemplate().save(pd);   
  13.   
  14.     }   
  15.   
  16.     public void deleteProduct(Products pd) {   
  17.     this.getHibernateTemplate().delete(pd);   
  18.   
  19.     }   
  20.   
  21.     public String getMaxId() {   
  22.         String sql="select max(gameId)+1 from Products";   
  23.          String  noStr=null;   
  24.          List  list=(List)this.getHibernateTemplate().find(sql);   
  25.          Iterator  it=list.iterator();   
  26.          if(it.hasNext()){   
  27.             Object noInt=it.next();   
  28.             if(noInt==null){   
  29.                 noStr="1";   
  30.             }else{   
  31.                 noStr=noInt.toString();   
  32.             }   
  33.   
  34.          }   
  35.          if(noStr.length()==1){   
  36.              noStr="000"+noStr;   
  37.          }else if(noStr.length()==2){   
  38.              noStr="00"+noStr;   
  39.          }else if(noStr.length()==2){   
  40.              noStr="0"+noStr;   
  41.          } else {   
  42.              noStr=noStr;   
  43.          }   
  44.        
  45.         return noStr;   
  46.     }   
  47.   
  48.     public List getProducts() {   
  49.         String hql="from products order by gameNameCn";   
  50.         this.getHibernateTemplate().find(hql);   
  51.         return null;   
  52.     }   
  53.   
  54.     public List getProducts(final int pageSize, final int startRow) {   
  55.             
  56.         return this.getHibernateTemplate().executeFind(new HibernateCallback(){   
  57.   
  58.             public Object doInHibernate(Session session ) throws HibernateException, SQLException {   
  59.                 Query query=session.createQuery("from products order by gameNameCn");   
  60.                  query.setFirstResult(startRow);   
  61.                    
  62.                   query.setMaxResults(pageSize);   
  63.                 return query.list();   
  64.             }   
  65.                 
  66.          });    
  67.            
  68.     }   
  69.   
  70.     public Products getProducts(int gameId) {   
  71.         return (Products)this.getHibernateTemplate().get(Products.class, gameId);   
  72.             
  73.     }   
  74.   
  75.     public int getRows(String fieldName, String value) {   
  76.         
  77.         String sql = " FROM Products where  " + fieldName + "  like '% " + value + " %' " + " ORDER BY gameNameCn " ;   
  78.         List list = this .getHibernateTemplate().find(sql);   
  79.          return  list.size();   
  80.     }   
  81.   
  82.     public List queryProducts(String fieldName, String value) {   
  83.         String sql = "FROM Products where" + fieldName + "like'%" + value + "%' " + "ORDER BY gameNameCn" ;   
  84.   
  85.         return this.getHibernateTemplate().find(sql);   
  86.     }   
  87.   
  88.     public List queryProducts(String fieldName,  String value, final int pageSize,   
  89.             final   int startRow) {   
  90.         final  String sql = " FROM Products where  " + fieldName+ "  like '% " + value + " %' " + " ORDER BY gameNameCn " ;   
  91.         return this.getHibernateTemplate().executeFind(new HibernateCallback(){   
  92.            
  93.   
  94.             public Object doInHibernate(Session session ) throws HibernateException, SQLException {   
  95.                 Query query=session.createQuery(sql);   
  96.                  query.setFirstResult(startRow);   
  97.                    
  98.                   query.setMaxResults(pageSize);   
  99.                 return query.list();   
  100.             }   
  101.                 
  102.          });    
  103.            
  104.        
  105.     }   
  106.   
  107.     public void updateProductd(Products pd) {   
  108.           this.getHibernateTemplate().update(pd);   
  109.     }   
  110.   
  111. }   
分享到:
评论
5 楼 supttkl 2008-08-10  
List list = this .getHibernateTemplate().find(sql);   
         return  list.size();  
效率太低了。分页没什么意识。
4 楼 lovinchan 2008-08-10  
太感谢了,这正是我需要的         
3 楼 守望者 2007-09-07  
大家有什么好的分页分享一下不?
2 楼 92java 2007-09-07  
hibernate提供了获得当前页面记录的方法。
而且不觉得这么通用。
1 楼 leeon 2007-09-07  
好像不怎么通用吧,每一个业务对象的DAO不是都要实现一段分页代码?
而且我个人认为find出List在用list.size的方法应该不是一个好办法

相关推荐

    java一个通用的分页方法

    下面,我们将深入探讨一个Java通用分页方法的实现细节,以及如何在实际项目中运用这一技术。 #### 分页类`Pager`详解 `Pager`类是整个分页逻辑的核心。它包含了分页所需的所有属性和方法,如总行数、每页显示的...

    java 通用分页 java 通用分页

    在本文中,我们使用了一个名为GetRecordFromPage的存储过程,这个存储过程可以根据需要进行分页处理。 4. 存储过程GetRecordFromPage GetRecordFromPage存储过程是我们实现分页处理的核心部分。这个存储过程接受多...

    通用分页方法接口.rar

    通用分页方法接口的设计旨在提供一种标准化的、可复用的解决方案,使得不同的数据访问层(如数据库查询、API调用等)都能够方便地进行数据分页操作。下面我们将详细探讨这个主题。 一、分页的基本概念 分页是指将...

    超强php分页打包 通用分页 万能分页 ajax分页 google分页

    通用分页则是指设计一个可以适应多种场景的分页组件,它可能包含以下特性: 1. 参数化配置:允许用户自定义每页显示的记录数。 2. URL路由处理:支持参数传递,如通过`?page=2`来表示第2页。 3. 多种样式支持:提供...

    sql Server 通用分页存储过程

    sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程

    通用分页方法

    在上面的代码中,我们创建了一个名为`PagingDal`的类,其中有一个方法`GetPagedData`,它接受页码和每页大小作为输入,然后使用ADO.NET连接到数据库,执行存储过程并返回结果。注意,`YourDataType`应替换为实际数据...

    Mybatis通用分页插件

    Mybatis通用分页插件通过自动处理分页参数,极大地简化了这一过程。 该插件的核心功能包括: 1. **智能分页**:根据不同的数据库(如MySQL、Oracle、SQL Server等)自动生成对应的分页SQL,无需手动编写LIMIT或...

    SSH通用分页组件 SSH分页

    SSH分页 分页 通用分页 struts2分页

    通用分页的使用方法以及原理

    在具体实现中,PageMethod类通常会有一个方法用于获取当前页的数据,该方法可能调用存储过程以提高效率。存储过程接收表名、查询条件等参数,返回符合要求的分页数据。同时,PageMethod还有一个方法用于计算数据库表...

    java通用分页代码实例.rar

    一个通用的分页组件可能包含以下几个关键部分: - 分页参数:存储每页大小、当前页码等信息。 - 分页查询接口:定义分页查询的方法,接受分页参数并返回分页结果。 - 数据源适配器:根据不同的数据库实现具体的...

    springmvc+mybatis通用分页

    7. **通用分页**:为了实现通用性,我们可以创建一个基类,包含分页参数,然后让所有需要分页的Service继承这个基类。这样,我们只需要在Controller中传入分页参数,Service层就可以自动处理分页逻辑。 8. **返回...

    sturts +hernate+ spring分页通用方法

    一个通用的SSH分页方法通常包含以下步骤: 1. **前端请求**:用户在页面上进行分页操作,如点击页码或设置每页显示数量,这些参数通过HTTP请求发送到服务器。 2. **Struts接收与处理**:在Struts的Action中,解析...

    hibernate通用分页

    "hibernate通用分页"就是为了解决这一问题,提供一个方便、易用的分页解决方案。 分页的核心在于如何根据用户请求的数据范围(如页码和每页显示条数)来查询数据库,并返回相应的结果集。在Hibernate中,我们可以...

    SSM 实现通用分页

    在Service层,我们可以创建一个通用的分页方法,接受页码和每页大小作为参数,然后调用MyBatis的Mapper进行分页查询。返回的Page对象则可以通过Struts2的Action传递给前端展示。 前端页面上,用户可以通过导航按钮...

    asp.net通用分页类

    本教程将详细讲解如何创建一个通用的分页类,以便在多个页面中复用。 首先,我们需要理解分页的基本原理。分页主要是通过限制每次从数据库中取出的数据量来实现的。比如,每一页显示10条记录,当用户点击下一页时,...

    struts+spring+hibernate通用分页方法

    这个“struts+spring+hibernate通用分页方法”是关于如何在整合这三大框架的项目中实现高效且可复用的分页功能的知识点。 首先,让我们了解分页的基本概念。在Web应用中,特别是在处理大数据量时,分页是一种提高...

    JAVA写的通用分页

    本文将详细探讨"JAVA写的通用分页"这一主题,结合描述中的"通用高效分页存储过程实现",我们将深入理解Java分页的原理、实现方式以及优化策略。 首先,分页的基本概念是将大量数据分块展示,而不是一次性加载所有...

    通用分页实现及其OO设计探讨(2)

    总的来说,“通用分页实现及其OO设计探讨”涵盖了Web开发中的一个重要实践,即如何通过面向对象的设计思想和JSP技术实现高效、灵活的分页功能。通过对分页参数的封装、服务类的抽象以及JSP页面的渲染,我们可以构建...

    一个通用的数据库分页类

    这通常需要一个方法来执行无限制的SQL查询以获取记录总数。 4. **获取当前页数据**:构建并执行带有LIMIT和OFFSET的SQL查询,以获取指定页码的数据。可能需要一个方法来接受当前页码作为参数,并返回该页的数据。 ...

    jsp通用分页

    总结来说,`jsp通用分页`的核心是利用JDBC的滚动结果集和数据库的分页特性,结合适当的接口设计,实现一个跨数据库的分页机制。这既要求对JDBC和数据库有深入理解,也需要考虑代码的灵活性和性能优化。

Global site tag (gtag.js) - Google Analytics