zoukankan      html  css  js  c++  java
  • Java实现分页

    现在开始编写 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();; // 获得总行数 
         List getProducts( int  pageSize,  int  startRow) ; // 获得一段记录 
         Products getProduct(String gameId); // 根据ID获得记录 
         String getMaxID(); // 获得最大ID值 
          void  updateProductd(Products pd); // 修改记录 
         List queryProducts(String fieldname,String value); // 根据条件查询的所有记录 
          int  getRows(String fieldname,String value); // 获得总行数 
         List queryProducts(String fieldname,String value, int  pageSize,  int  startRow); // 根据条件查询的一段记录 
     }

    com.game.products.services 包中新建 ProductsServiceImp 类,这个类实现了 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()  {} 
        
         
    /** */ /** 
         * 函数说明:添加信息
         * 参数说明:对象 
         * 返回值:
          
    */
     
          
    public   void  addProduct(Products pd)   {
            productsDao.addProduct(pd);
        }
     
     
          
    /** */ /** 
         * 函数说明:删除信息
         * 参数说明: 对象
         * 返回值:
          
    */
     
          
    public   void  deleteProduct(Products pd)   {
            productsDao.deleteProduct(pd);
        }
     
     
          
    /** */ /** 
         * 函数说明:获得所有的信息
         * 参数说明: 
         * 返回值:信息的集合
          
    */
     
          
    public  List getProducts()   {
             
    return  productsDao.getProducts();
        }
     
        
         
    /** */ /** 
         * 函数说明:获得总行数
         * 参数说明: 
         * 返回值:总行数
          
    */
     
          
    public   int  getRows()   {
             
    return  productsDao.getRows();
        }
     
        
         
    /** */ /** 
         * 函数说明:获得一段信息
         * 参数说明: 
         * 返回值:信息的集合
          
    */
     
          
    public  List getProducts( int  pageSize,  int  startRow)   {
             
    return  productsDao.getProducts(pageSize, startRow);
        }
     
     
          
    /** */ /** 
         * 函数说明:获得一条的信息
         * 参数说明: ID
         * 返回值:对象
          
    */
     
          
    public  Products getProduct(String gameId)   {
             
    return  productsDao.getProduct(gameId);
        }
     
     
          
    /** */ /** 
         * 函数说明:获得最大ID
         * 参数说明: 
         * 返回值:最大ID
          
    */
     
          
    public  String getMaxID()   {
             
    return  productsDao.getMaxID();
        }
     
     
          
    /** */ /** 
         * 函数说明:修改信息
         * 参数说明: 对象
         * 返回值:
          
    */
     
          
    public   void  updateProductd(Products pd)   {
            productsDao.updateProductd(pd);
        }
     
     
          
    /** */ /** 
         * 函数说明:查询信息
         * 参数说明: 集合
         * 返回值:
          
    */
     
          
    public  List queryProducts(String fieldname,String value)   {
             
    return  productsDao.queryProducts(fieldname, value);
        }
     
        
         
    /** */ /** 
         * 函数说明:获得总行数
         * 参数说明: 
         * 返回值:总行数
          
    */
     
          
    public   int  getRows(String fieldname,String value)   {
             
    return  productsDao.getRows(fieldname, value);
        }
     
        
         
    /** */ /** 
         * 函数说明:查询一段信息
         * 参数说明: 集合
         * 返回值:
          
    */
     
          
    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;
        }
     
     
    }

    基本的业务层代码就这些了。因为还有分页的业务,所以接下来编写分页的代码。


    分页是个公共的类,所以放在
    com.game.commons 中。

    Pager 类,封装了分页需要的属性,代码如下:

    package  com.game.commons;

     
    import  java.math. * ;

     
    public   class  Pager   {
         
    private   int  totalRows;  // 总行数 
          private   int  pageSize  =   30 ;  // 每页显示的行数 
          private   int  currentPage;  // 当前页号 
          private   int  totalPages;  // 总页数 
          private   int  startRow;  // 当前页在数据库中的起始行 
         
         
    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 类,主要有个 getPager 方法返回 Pager 类。代码如下:

     package  com.game.commons;

     
    public   class  PagerService   {
         
    public  Pager getPager(String currentPage,String pagerMethod, int  totalRows)   {
             
    //     定义pager对象,用于传到页面 
             Pager pager  =   new  Pager(totalRows);
             
    //     如果当前页号为空,表示为首次查询该页
             
    //     如果不为空,则刷新pager对象,输入当前页号等信息 
               if  (currentPage  !=   null )   {
                pager.refresh(Integer.parseInt(currentPage));
            }
     
             
    //     获取当前执行的方法,首页,前一页,后一页,尾页。 
               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;
        }
     
    }
  • 相关阅读:
    PAT 1097. Deduplication on a Linked List (链表)
    PAT 1096. Consecutive Factors
    PAT 1095. Cars on Campus
    PAT 1094. The Largest Generation (层级遍历)
    PAT 1093. Count PAT's
    PAT 1092. To Buy or Not to Buy
    PAT 1091. Acute Stroke (bfs)
    CSS:word-wrap/overflow/transition
    node-webkit中的requirejs报错问题:path must be a string error in Require.js
    script加载之defer和async
  • 原文地址:https://www.cnblogs.com/sailormoon/p/2814774.html
Copyright © 2011-2022 走看看