技术开发 频道

struts+spring+hibernate通用分页方法



CriterionList封装了Hibernate的参数:
java 代码
 
  1. /** 
  2.  * 封装了ArrayList,装的是Criterion 
  3.  */  
  4. public class CriterionList extends ArrayList {  
  5.     public final Criterion getParas(final int index) {  
  6.         return (Criterion) super.get(index);  
  7.     }  
  8.     public final void addPara(final int index, final Criterion p) {  
  9.         super.add(index, p);  
  10.     }  
  11.     public final void addPara(final Criterion p) {  
  12.         super.add(p);  
  13.     }  
  14.     public final int indexofPara(final Criterion p) {  
  15.         return super.indexOf(p);  
  16.     }  
  17.     public final void removePara(final int index) {  
  18.         super.remove(index);  
  19.     }  
  20. }  

PagerUtil用于将客户端的页码和每页多少个记录算出应该取数据库中的记录的位置,再由hibernate构造出一个三层的sql语句。
java 代码
 
  1. public class PagerUtil {  
  2.     /** 
  3.      *  
  4.      * @param allCounts 总记录数 
  5.      * @param curPageNO  
  6.      * @param pageSize  每页显示的记录数目 
  7.      * @return 
  8.      */  
  9.     public static String  getBar(String action,String form,int allCounts,int curPageNO, int pageSize){  
  10.         Pager pager = null;  
  11.             try {  
  12.                 if (curPageNO<1) curPageNO=1;  
  13.                 if (curPageNO> (int) Math.ceil((double) allCounts / pageSize))   
  14.                     curPageNO =(int) Math.ceil((double) allCounts / pageSize);  
  15.                 //得到offset  
  16.                 int offset = (curPageNO-1)*pageSize;//从第几条开始取值  
  17.                  //生成工具条  
  18.                  pager=new Pager(allCounts,offset,pageSize);  
  19.                  pager.setCurPageNO(curPageNO);//设置当前的页码  
  20.             } catch (Exception e) {  
  21.                 System.out.println("生成工具条出错!");  
  22.           }  
  23.          return pager.getToolBar(action,form);  
  24.     }  
  25.       
  26.     public static String  getBar(String url,int allCounts,int curPageNO, int pageSize){  
  27.         Pager pager = null;  
  28.             try {  
  29.                 if (curPageNO<1) curPageNO=1;  
  30.                 if (curPageNO> (int) Math.ceil((double) allCounts / pageSize))   
  31.                     curPageNO =(int) Math.ceil((double) allCounts / pageSize);  
  32.                 //得到offset  
  33.                 int offset = (curPageNO-1)*pageSize;//从第几条开始取值  
  34.                  //生成工具条  
  35.                  pager=new Pager(allCounts,offset,pageSize);  
  36.                  pager.setCurPageNO(curPageNO);//设置当前的页码  
  37.             } catch (Exception e) {  
  38.                 System.out.println("生成工具条出错!");  
  39.           }  
  40.          return pager.getToolBar(url);  
  41.     }  
  42.       
  43.     public static int getOffset(int rowCounts,int curPageNO, int pageSize){  
  44.         int offset=0;  
  45.             try {  
  46.                 //得到第几页  
  47.                 if (curPageNO<1) curPageNO=1;  
  48.                 if (curPageNO> (int) Math.ceil((double) rowCounts / pageSize))   
  49.                     curPageNO =(int) Math.ceil((double) rowCounts / pageSize);  
  50.                 //得到offset  
  51.                   offset = (curPageNO-1)*pageSize;  
  52.             } catch (Exception e) {  
  53.                 System.out.println("getOffset出错!");  
  54.             }    
  55.        return offset;  
  56.     }  
  57.       
  58.     public static int getCurPageNO(String curPage){  
  59.             int curPageNO;  
  60.              if (curPage==null||"".equals(curPage.trim())) {  
  61.                  curPageNO=1;//第一次处于第一页  
  62.               } else {  
  63.                   try {  
  64.                       curPageNO = Integer.parseInt(curPage);//得到当前页  
  65.                 } catch (Exception e) {  
  66.                     curPageNO=1;  
  67.                 }  
  68.               }  
  69.              return curPageNO;  
  70.         }  
0
相关文章