posts - 14, comments - 15, trackbacks - 0, articles - 0
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          java分頁(yè)代碼

          Posted on 2008-09-27 11:03 析木 閱讀(13301) 評(píng)論(14)  編輯  收藏

          現(xiàn)在開(kāi)始編寫(xiě) Service 層代碼:

          com.game.products.services.iface 包中新建 ProductsService 接口,代碼如下:

          package  com.game.products.services.iface;

           
          import  java.util.List;

           
          import  com.game.products.model.Products;

           
          public   interface  ProductsService   {
               
          void  addProduct(Products pd); // 添加記錄 
                void  deleteProduct(Products pd); // 刪除記錄     
               List getProducts(); // 獲得所有記錄 
                int  getRows();; // 獲得總行數(shù) 
               List getProducts( int  pageSize,  int  startRow) ; // 獲得一段記錄 
               Products getProduct(String gameId); // 根據(jù)ID獲得記錄 
               String getMaxID(); // 獲得最大ID值 
                void  updateProductd(Products pd); // 修改記錄 
               List queryProducts(String fieldname,String value); // 根據(jù)條件查詢的所有記錄 
                int  getRows(String fieldname,String value); // 獲得總行數(shù) 
               List queryProducts(String fieldname,String value, int  pageSize,  int  startRow); // 根據(jù)條件查詢的一段記錄 
           }
          com.game.products.services 包中新建 ProductsServiceImp 類,這個(gè)類實(shí)現(xiàn)了 ProductsService 接口,代碼如下:
          package  com.game.products.services;

           
          import  java.util.List;

           
          import  com.game.products.dao.iface.ProductsDao;
           
          import  com.game.products.model.Products;
           
          import  com.game.products.services.iface.ProductsService;

           
          public   class  ProductsServiceImp  implements  ProductsService  {
               
          private  ProductsDao productsDao;
              
               
          public  ProductsServiceImp()  {} 
              
               
          /** */ /** 
               * 函數(shù)說(shuō)明:添加信息
               * 參數(shù)說(shuō)明:對(duì)象 
               * 返回值:
                
          */
           
                
          public   void  addProduct(Products pd)   {
                  productsDao.addProduct(pd);
              }
           
           
                
          /** */ /** 
               * 函數(shù)說(shuō)明:刪除信息
               * 參數(shù)說(shuō)明: 對(duì)象
               * 返回值:
                
          */
           
                
          public   void  deleteProduct(Products pd)   {
                  productsDao.deleteProduct(pd);
              }
           
           
                
          /** */ /** 
               * 函數(shù)說(shuō)明:獲得所有的信息
               * 參數(shù)說(shuō)明: 
               * 返回值:信息的集合
                
          */
           
                
          public  List getProducts()   {
                   
          return  productsDao.getProducts();
              }
           
              
               
          /** */ /** 
               * 函數(shù)說(shuō)明:獲得總行數(shù)
               * 參數(shù)說(shuō)明: 
               * 返回值:總行數(shù)
                
          */
           
                
          public   int  getRows()   {
                   
          return  productsDao.getRows();
              }
           
              
               
          /** */ /** 
               * 函數(shù)說(shuō)明:獲得一段信息
               * 參數(shù)說(shuō)明: 
               * 返回值:信息的集合
                
          */
           
                
          public  List getProducts( int  pageSize,  int  startRow)   {
                   
          return  productsDao.getProducts(pageSize, startRow);
              }
           
           
                
          /** */ /** 
               * 函數(shù)說(shuō)明:獲得一條的信息
               * 參數(shù)說(shuō)明: ID
               * 返回值:對(duì)象
                
          */
           
                
          public  Products getProduct(String gameId)   {
                   
          return  productsDao.getProduct(gameId);
              }
           
           
                
          /** */ /** 
               * 函數(shù)說(shuō)明:獲得最大ID
               * 參數(shù)說(shuō)明: 
               * 返回值:最大ID
                
          */
           
                
          public  String getMaxID()   {
                   
          return  productsDao.getMaxID();
              }
           
           
                
          /** */ /** 
               * 函數(shù)說(shuō)明:修改信息
               * 參數(shù)說(shuō)明: 對(duì)象
               * 返回值:
                
          */
           
                
          public   void  updateProductd(Products pd)   {
                  productsDao.updateProductd(pd);
              }
           
           
                
          /** */ /** 
               * 函數(shù)說(shuō)明:查詢信息
               * 參數(shù)說(shuō)明: 集合
               * 返回值:
                
          */
           
                
          public  List queryProducts(String fieldname,String value)   {
                   
          return  productsDao.queryProducts(fieldname, value);
              }
           
              
               
          /** */ /** 
               * 函數(shù)說(shuō)明:獲得總行數(shù)
               * 參數(shù)說(shuō)明: 
               * 返回值:總行數(shù)
                
          */
           
                
          public   int  getRows(String fieldname,String value)   {
                   
          return  productsDao.getRows(fieldname, value);
              }
           
              
               
          /** */ /** 
               * 函數(shù)說(shuō)明:查詢一段信息
               * 參數(shù)說(shuō)明: 集合
               * 返回值:
                
          */
           
                
          public  List queryProducts(String fieldname,String value, int  pageSize,  int  startRow)   {
                   
          return  productsDao.queryProducts(fieldname, value,pageSize,startRow);
              }
           
           
                
          public  ProductsDao getProductsDao()   {
                   
          return  productsDao;
              }
           
           
                
          public   void  setProductsDao(ProductsDao productsDao)   {
                   
          this .productsDao  =  productsDao;
              }
           
           
          }

          基本的業(yè)務(wù)層代碼就這些了。因?yàn)檫€有分頁(yè)的業(yè)務(wù),所以接下來(lái)編寫(xiě)分頁(yè)的代碼。


          分頁(yè)是個(gè)公共的類,所以放在
          com.game.commons 中。

          Pager 類,封裝了分頁(yè)需要的屬性,代碼如下:

          package  com.game.commons;

           
          import  java.math. * ;

           
          public   class  Pager   {
               
          private   int  totalRows;  // 總行數(shù) 
                private   int  pageSize  =   30 ;  // 每頁(yè)顯示的行數(shù) 
                private   int  currentPage;  // 當(dāng)前頁(yè)號(hào) 
                private   int  totalPages;  // 總頁(yè)數(shù) 
                private   int  startRow;  // 當(dāng)前頁(yè)在數(shù)據(jù)庫(kù)中的起始行 
               
               
          public  Pager()   {
              }
           
              
               
          public  Pager( int  _totalRows)   {
                  totalRows  
          =  _totalRows;
                  totalPages 
          = totalRows / pageSize;
                   
          int  mod = totalRows % pageSize;
                   
          if (mod > 0 )  {
                      totalPages 
          ++ ;
                  }
           
                  currentPage  
          =   1 ;
                  startRow  
          =   0 ;
              }
           
              
               
          public   int  getStartRow()   {
                   
          return  startRow;
              }
           
                
          public   int  getTotalPages()   {
                   
          return  totalPages;
              }
           
                
          public   int  getCurrentPage()   {
                   
          return  currentPage;
              }
           
                
          public   int  getPageSize()   {
                   
          return  pageSize;
              }
           
                
          public   void  setTotalRows( int  totalRows)   {
                   
          this .totalRows  =  totalRows;
              }
           
                
          public   void  setStartRow( int  startRow)   {
                   
          this .startRow  =  startRow;
              }
           
                
          public   void  setTotalPages( int  totalPages)   {
                   
          this .totalPages  =  totalPages;
              }
           
                
          public   void  setCurrentPage( int  currentPage)   {
                   
          this .currentPage  =  currentPage;
              }
           
                
          public   void  setPageSize( int  pageSize)   {
                   
          this .pageSize  =  pageSize;
              }
           
                
          public   int  getTotalRows()   {
                   
          return  totalRows;
              }
           
                
          public   void  first()   {
                  currentPage  
          =   1 ;
                  startRow  
          =   0 ;
              }
           
                
          public   void  previous()   {
                   
          if  (currentPage  ==   1 )   {
                       
          return ;
                  }
           
                  currentPage 
          -- ;
                  startRow  
          =  (currentPage  -   1 )  *  pageSize;
              }
           
                
          public   void  next()   {
                   
          if  (currentPage  <  totalPages)   {
                      currentPage 
          ++ ;
                  }
           
                  startRow  
          =  (currentPage  -   1 )  *  pageSize;
              }
           
                
          public   void  last()   {
                  currentPage  
          =  totalPages;
                  startRow  
          =  (currentPage  -   1 )  *  pageSize;
              }
           
                
          public   void  refresh( int  _currentPage)   {
                  currentPage  
          =  _currentPage;
                   
          if  (currentPage  >  totalPages)   {
                      last();
                  }
           
              }
           
          }
          PagerService 類,主要有個(gè) getPager 方法返回 Pager 類。代碼如下:
           package  com.game.commons;

           
          public   class  PagerService   {
               
          public  Pager getPager(String currentPage,String pagerMethod, int  totalRows)   {
                   
          //     定義pager對(duì)象,用于傳到頁(yè)面 
                   Pager pager  =   new  Pager(totalRows);
                   
          //     如果當(dāng)前頁(yè)號(hào)為空,表示為首次查詢?cè)擁?yè)
                   
          //     如果不為空,則刷新pager對(duì)象,輸入當(dāng)前頁(yè)號(hào)等信息 
                     if  (currentPage  !=   null )   {
                      pager.refresh(Integer.parseInt(currentPage));
                  }
           
                   
          //     獲取當(dāng)前執(zhí)行的方法,首頁(yè),前一頁(yè),后一頁(yè),尾頁(yè)。 
                     if  (pagerMethod  !=   null )   {
                       
          if  (pagerMethod.equals( " first " ))   {
                          pager.first();
                      }
             else   if  (pagerMethod.equals( " previous " ))   {
                          pager.previous();
                      }
             else   if  (pagerMethod.equals( " next " ))   {
                          pager.next();
                      }
             else   if  (pagerMethod.equals( " last " ))   {
                          pager.last();
                      }
           
                  }
           
                   
          return  pager;
              }
           
          }

          這個(gè)分頁(yè)方法比較簡(jiǎn)單,而且功能也齊全,許多頁(yè)面級(jí)的開(kāi)源 table 中分頁(yè)很多也是基于這個(gè)原理,所以理解了這個(gè)分頁(yè),對(duì)其他各種分頁(yè)技術(shù)的理解也就迎刃而解了。

          服務(wù)層的代碼就這些了,接下來(lái)就可以寫(xiě) spring 的配置文件來(lái)用 spring 管理這些 Dao Service 了。


          評(píng)論

          # re: java分頁(yè)代碼  回復(fù)  更多評(píng)論   

          2009-05-19 00:12 by 求知如采金
          你好,我是JAVA初學(xué)者,看了你的分頁(yè)很有幫助,在此說(shuō)聲謝謝。

          但是我有個(gè)很弱智的問(wèn)題,我想看看DAO類的代碼,比如總行數(shù)怎么查出來(lái),怎么賦值到bean

          # re: java分頁(yè)代碼  回復(fù)  更多評(píng)論   

          2009-05-19 18:37 by 魏久銀
          @求知如采金
          select count(*) fom TABLE where.....

          # re: java分頁(yè)代碼  回復(fù)  更多評(píng)論   

          2009-06-18 13:53 by 毛蟲(chóng)
          你要寫(xiě)就寫(xiě)完整 可以運(yùn)行??!把配置文件寫(xiě)好啊!!
          我也好看嘛 呵呵 我是初學(xué)者 很多都不會(huì)啊

          # re: java分頁(yè)代碼[未登錄](méi)  回復(fù)  更多評(píng)論   

          2009-07-08 14:05 by cc
          你怎么能這樣呢,初學(xué)者有理了?氣氛

          # re: java分頁(yè)代碼  回復(fù)  更多評(píng)論   

          2009-08-13 20:40 by SexBro
          需要DAO!!!

          # re: java分頁(yè)代碼  回復(fù)  更多評(píng)論   

          2009-12-16 17:29 by 程瑞
          不錯(cuò)很好可以這樣想有腦 goooooooooooooooooooooooood

          # re: java分頁(yè)代碼  回復(fù)  更多評(píng)論   

          2010-02-08 17:06 by HTPM1
          樓主的分頁(yè)代碼確實(shí)很好。。不過(guò)我還是想看一下你的DAO。。查詢SQL怎么寫(xiě)的。。謝謝能發(fā)布一下嗎?

          # re: java分頁(yè)代碼[未登錄](méi)  回復(fù)  更多評(píng)論   

          2010-08-03 15:41 by ann
          在操作上下頁(yè)的時(shí)候,能保證操作的是同一個(gè)list嗎?

          # re: java分頁(yè)代碼  回復(fù)  更多評(píng)論   

          2010-09-17 09:10 by 就阿va
          怎么和我們頭一樣 把底層的 都封裝了 不讓看阿 郁悶

          # re: java分頁(yè)代碼  回復(fù)  更多評(píng)論   

          2012-01-17 15:14 by S771880049
          至少給出表的結(jié)構(gòu)也好啊

          # re: java分頁(yè)代碼  回復(fù)  更多評(píng)論   

          2012-08-24 16:48 by 游客
          看了半天才發(fā)現(xiàn)很不完整。
          唉!

          # re: java分頁(yè)代碼  回復(fù)  更多評(píng)論   

          2012-11-04 23:46 by jayhom
          寫(xiě)的很好,原理搞懂了。上面那個(gè)回復(fù)的@毛蟲(chóng),你學(xué)習(xí)還理直氣壯地,有你這樣的么?

          # re: java分頁(yè)代碼  回復(fù)  更多評(píng)論   

          2012-12-12 15:43 by 郭濛濛
          思路很清晰,謝謝分享!

          # re: java分頁(yè)代碼  回復(fù)  更多評(píng)論   

          2014-05-17 00:33 by zuidaima
          java分頁(yè)代碼代碼下載:http://www.zuidaima.com/share/search.htm?key=java%E5%88%86%E9%A1%B5

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          我要啦免费统计
          主站蜘蛛池模板: 望城县| 广州市| 平和县| 平潭县| 神木县| 大同市| 台南县| 隆尧县| 淮阳县| 建宁县| 南宫市| 丹棱县| 湘乡市| 武川县| 会理县| 新乡县| 罗城| 商河县| 侯马市| 莫力| 美姑县| 阳原县| 赤水市| 中西区| 荣昌县| 江陵县| 电白县| 府谷县| 和平区| 武邑县| 睢宁县| 信阳市| 宜春市| 江口县| 宁南县| 华安县| 富阳市| 桓台县| 乌拉特后旗| 叙永县| 溧阳市|