(转)struts+spring+hibernate的web应用(三) Service层代码编写
2008-03-26 17:06
567 查看
struts+spring+hibernate的web应用<三> Service层代码编写
现在开始编写 Service 层代码:
在 com.game.products.services.iface 包中新建 ProductsService 接口,代码如下:
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
package com.game.products.services.iface;
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
import java.util.List;
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
import com.game.products.model.Products;
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif)
public interface ProductsService
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
void addProduct(Products pd); // 添加记录
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
void deleteProduct(Products pd); // 删除记录
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
List getProducts(); // 获得所有记录
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
int getRows();; // 获得总行数
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
List getProducts( int pageSize, int startRow) ; // 获得一段记录
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
Products getProduct(String gameId); // 根据ID获得记录
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
String getMaxID(); // 获得最大ID值
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
void updateProductd(Products pd); // 修改记录
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
List queryProducts(String fieldname,String value); // 根据条件查询的所有记录
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
int getRows(String fieldname,String value); // 获得总行数
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
List queryProducts(String fieldname,String value, int pageSize, int startRow); // 根据条件查询的一段记录
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
在 com.game.products.services 包中新建 ProductsServiceImp 类,这个类实现了 ProductsService 接口,代码如下:
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
package com.game.products.services;
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
import java.util.List;
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
import com.game.products.dao.iface.ProductsDao;
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
import com.game.products.model.Products;
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
import com.game.products.services.iface.ProductsService;
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif)
public class ProductsServiceImp implements ProductsService
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
private ProductsDao productsDao;
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public ProductsServiceImp()
![](http://www.blogjava.net/Images/dot.gif)
{}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
/** */ /**
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 函数说明:添加信息
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 参数说明:对象
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 返回值:
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
*/
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public void addProduct(Products pd)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
productsDao.addProduct(pd);
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
/** */ /**
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 函数说明:删除信息
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 参数说明: 对象
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 返回值:
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
*/
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public void deleteProduct(Products pd)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
productsDao.deleteProduct(pd);
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
/** */ /**
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 函数说明:获得所有的信息
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 参数说明:
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 返回值:信息的集合
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
*/
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public List getProducts()
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
return productsDao.getProducts();
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
/** */ /**
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 函数说明:获得总行数
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 参数说明:
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 返回值:总行数
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
*/
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public int getRows()
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
return productsDao.getRows();
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
/** */ /**
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 函数说明:获得一段信息
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 参数说明:
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 返回值:信息的集合
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
*/
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public List getProducts( int pageSize, int startRow)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
return productsDao.getProducts(pageSize, startRow);
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
/** */ /**
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 函数说明:获得一条的信息
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 参数说明: ID
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 返回值:对象
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
*/
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public Products getProduct(String gameId)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
return productsDao.getProduct(gameId);
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
/** */ /**
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 函数说明:获得最大ID
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 参数说明:
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 返回值:最大ID
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
*/
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public String getMaxID()
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
return productsDao.getMaxID();
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
/** */ /**
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 函数说明:修改信息
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 参数说明: 对象
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 返回值:
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
*/
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public void updateProductd(Products pd)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
productsDao.updateProductd(pd);
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
/** */ /**
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 函数说明:查询信息
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 参数说明: 集合
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 返回值:
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
*/
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public List queryProducts(String fieldname,String value)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
return productsDao.queryProducts(fieldname, value);
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
/** */ /**
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 函数说明:获得总行数
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 参数说明:
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 返回值:总行数
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
*/
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public int getRows(String fieldname,String value)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
return productsDao.getRows(fieldname, value);
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
/** */ /**
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 函数说明:查询一段信息
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 参数说明: 集合
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 返回值:
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
*/
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public List queryProducts(String fieldname,String value, int pageSize, int startRow)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
return productsDao.queryProducts(fieldname, value,pageSize,startRow);
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public ProductsDao getProductsDao()
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
return productsDao;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public void setProductsDao(ProductsDao productsDao)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
this .productsDao = productsDao;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
基本的业务层代码就这些了。因为还有分页的业务,所以接下来编写分页的代码。
分页是个公共的类,所以放在 com.game.commons 中。
Pager 类,封装了分页需要的属性,代码如下:
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
package com.game.commons;
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
import java.math. * ;
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif)
public class Pager
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
private int totalRows; // 总行数
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
private int pageSize = 30 ; // 每页显示的行数
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
private int currentPage; // 当前页号
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
private int totalPages; // 总页数
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
private int startRow; // 当前页在数据库中的起始行
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public Pager()
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public Pager( int _totalRows)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
totalRows = _totalRows;
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
totalPages = totalRows / pageSize;
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
int mod = totalRows % pageSize;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
if (mod > 0 )
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
totalPages ++ ;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
currentPage = 1 ;
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
startRow = 0 ;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public int getStartRow()
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
return startRow;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public int getTotalPages()
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
return totalPages;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public int getCurrentPage()
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
return currentPage;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public int getPageSize()
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
return pageSize;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public void setTotalRows( int totalRows)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
this .totalRows = totalRows;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public void setStartRow( int startRow)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
this .startRow = startRow;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public void setTotalPages( int totalPages)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
this .totalPages = totalPages;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public void setCurrentPage( int currentPage)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
this .currentPage = currentPage;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public void setPageSize( int pageSize)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
this .pageSize = pageSize;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public int getTotalRows()
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
return totalRows;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public void first()
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
currentPage = 1 ;
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
startRow = 0 ;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public void previous()
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
if (currentPage == 1 )
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
return ;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
currentPage -- ;
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
startRow = (currentPage - 1 ) * pageSize;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public void next()
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
if (currentPage < totalPages)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
currentPage ++ ;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
startRow = (currentPage - 1 ) * pageSize;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public void last()
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
currentPage = totalPages;
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
startRow = (currentPage - 1 ) * pageSize;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public void refresh( int _currentPage)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
currentPage = _currentPage;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
if (currentPage > totalPages)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
last();
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
PagerService 类,主要有个 getPager 方法返回 Pager 类。代码如下:
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
package com.game.commons;
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif)
public class PagerService
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public Pager getPager(String currentPage,String pagerMethod, int totalRows)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
// 定义pager对象,用于传到页面
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
Pager pager = new Pager(totalRows);
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
// 如果当前页号为空,表示为首次查询该页
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
// 如果不为空,则刷新pager对象,输入当前页号等信息
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
if (currentPage != null )
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
pager.refresh(Integer.parseInt(currentPage));
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
// 获取当前执行的方法,首页,前一页,后一页,尾页。
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
if (pagerMethod != null )
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
if (pagerMethod.equals( " first " ))
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
pager.first();
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
} else if (pagerMethod.equals( " previous " ))
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
pager.previous();
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
} else if (pagerMethod.equals( " next " ))
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
pager.next();
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
} else if (pagerMethod.equals( " last " ))
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
pager.last();
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
return pager;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
这个分页方法比较简单,而且功能也齐全,许多页面级的开源 table 中分页很多也是基于这个原理,所以理解了这个分页,对其他各种分页技术的理解也就迎刃而解了。
服务层的代码就这些了,接下来就可以写 spring 的配置文件来用 spring 管理这些 Dao 和 Service 了。
在 spring-context 包中新建 applicationContext.xml 。配置的写法如下:
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
<? xml version="1.0" encoding="ISO-8859-1" ?>
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
<! DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< beans >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
<!-- dataSource config -->
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< bean id ="dataSource" class ="org.springframework.jndi.JndiObjectFactoryBean" >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< property name ="jndiName" >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< value > java:comp/env/jdbc/game </ value >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
</ property >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
</ bean >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
<!-- SessionFactory -->
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< bean id ="sessionFactory"
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
class ="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< property name ="dataSource" >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< ref bean ="dataSource" />
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
</ property >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< property name ="configLocation" >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< value > classpath:com/game/bean/hibernate/hibernate.cfg.xml </ value >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
</ property >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
</ bean >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
<!-- TransactionManager -->
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< bean id ="transactionManager"
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
class ="org.springframework.orm.hibernate3.HibernateTransactionManager" >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< property name ="sessionFactory" >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< ref local ="sessionFactory" />
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
</ property >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
</ bean >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
<!-- DAO -->
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< bean id ="productsDao" class ="com.game.products.dao.hibernate.ProductsMapDao" >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< property name ="sessionFactory" >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< ref bean ="sessionFactory" />
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
</ property >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
</ bean >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
<!-- Services -->
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< bean id ="productsService" class ="com.game.products.services.ProductsServiceImp" >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< property name ="productsDao" >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< ref bean ="productsDao" />
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
</ property >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
</ bean >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< bean id ="pagerService" class ="com.game.commons.PagerService" >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
</ bean >
</beans>
配置文件不难,主要是些 IOC 控制。数据库链接我采用的是数据源方式,需要在 tomcat 的conf文件夹下的 server.xml 中添加数据源,添加的数据如下:
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< Context path ="/game" docBase ="D:/tomcat-5.5.20/webapps/game" debug ="0" reloadable ="true" >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< Resource
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
name ="jdbc/game"
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
type ="javax.sql.DataSource"
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
password =""
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
driverClassName ="net.sourceforge.jtds.jdbc.Driver"
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
maxIdle ="2"
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
maxWait ="5000"
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
username ="sa"
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
url ="jdbc:jtds:sqlserver://127.0.0.1:16899/game"
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
maxActive ="4" />
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
</ Context >
这个数据源是针对 tomcat 5.5 以上版本的,以下版本的写法有所不同,不同之处可以用 google 搜索得知。这个数据源很简单,并没有过多的配置来优化系统,只是为了让项目更容易让人理解。需要注意都是,我的数据链接的JDBC包是jtds包,而不是普通的那个三个jar包。
现在开始编写 Service 层代码:
在 com.game.products.services.iface 包中新建 ProductsService 接口,代码如下:
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
package com.game.products.services.iface;
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
import java.util.List;
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
import com.game.products.model.Products;
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif)
public interface ProductsService
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
void addProduct(Products pd); // 添加记录
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
void deleteProduct(Products pd); // 删除记录
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
List getProducts(); // 获得所有记录
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
int getRows();; // 获得总行数
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
List getProducts( int pageSize, int startRow) ; // 获得一段记录
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
Products getProduct(String gameId); // 根据ID获得记录
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
String getMaxID(); // 获得最大ID值
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
void updateProductd(Products pd); // 修改记录
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
List queryProducts(String fieldname,String value); // 根据条件查询的所有记录
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
int getRows(String fieldname,String value); // 获得总行数
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
List queryProducts(String fieldname,String value, int pageSize, int startRow); // 根据条件查询的一段记录
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
在 com.game.products.services 包中新建 ProductsServiceImp 类,这个类实现了 ProductsService 接口,代码如下:
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
package com.game.products.services;
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
import java.util.List;
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
import com.game.products.dao.iface.ProductsDao;
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
import com.game.products.model.Products;
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
import com.game.products.services.iface.ProductsService;
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif)
public class ProductsServiceImp implements ProductsService
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
private ProductsDao productsDao;
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public ProductsServiceImp()
![](http://www.blogjava.net/Images/dot.gif)
{}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
/** */ /**
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 函数说明:添加信息
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 参数说明:对象
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 返回值:
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
*/
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public void addProduct(Products pd)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
productsDao.addProduct(pd);
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
/** */ /**
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 函数说明:删除信息
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 参数说明: 对象
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 返回值:
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
*/
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public void deleteProduct(Products pd)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
productsDao.deleteProduct(pd);
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
/** */ /**
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 函数说明:获得所有的信息
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 参数说明:
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 返回值:信息的集合
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
*/
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public List getProducts()
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
return productsDao.getProducts();
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
/** */ /**
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 函数说明:获得总行数
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 参数说明:
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 返回值:总行数
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
*/
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public int getRows()
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
return productsDao.getRows();
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
/** */ /**
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 函数说明:获得一段信息
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 参数说明:
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 返回值:信息的集合
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
*/
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public List getProducts( int pageSize, int startRow)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
return productsDao.getProducts(pageSize, startRow);
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
/** */ /**
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 函数说明:获得一条的信息
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 参数说明: ID
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 返回值:对象
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
*/
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public Products getProduct(String gameId)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
return productsDao.getProduct(gameId);
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
/** */ /**
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 函数说明:获得最大ID
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 参数说明:
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 返回值:最大ID
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
*/
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public String getMaxID()
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
return productsDao.getMaxID();
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
/** */ /**
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 函数说明:修改信息
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 参数说明: 对象
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 返回值:
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
*/
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public void updateProductd(Products pd)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
productsDao.updateProductd(pd);
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
/** */ /**
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 函数说明:查询信息
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 参数说明: 集合
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 返回值:
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
*/
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public List queryProducts(String fieldname,String value)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
return productsDao.queryProducts(fieldname, value);
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
/** */ /**
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 函数说明:获得总行数
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 参数说明:
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 返回值:总行数
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
*/
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public int getRows(String fieldname,String value)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
return productsDao.getRows(fieldname, value);
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
/** */ /**
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 函数说明:查询一段信息
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 参数说明: 集合
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
* 返回值:
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
*/
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public List queryProducts(String fieldname,String value, int pageSize, int startRow)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
return productsDao.queryProducts(fieldname, value,pageSize,startRow);
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public ProductsDao getProductsDao()
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
return productsDao;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public void setProductsDao(ProductsDao productsDao)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
this .productsDao = productsDao;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
基本的业务层代码就这些了。因为还有分页的业务,所以接下来编写分页的代码。
分页是个公共的类,所以放在 com.game.commons 中。
Pager 类,封装了分页需要的属性,代码如下:
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
package com.game.commons;
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
import java.math. * ;
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif)
public class Pager
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
private int totalRows; // 总行数
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
private int pageSize = 30 ; // 每页显示的行数
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
private int currentPage; // 当前页号
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
private int totalPages; // 总页数
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
private int startRow; // 当前页在数据库中的起始行
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public Pager()
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public Pager( int _totalRows)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
totalRows = _totalRows;
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
totalPages = totalRows / pageSize;
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
int mod = totalRows % pageSize;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
if (mod > 0 )
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
totalPages ++ ;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
currentPage = 1 ;
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
startRow = 0 ;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public int getStartRow()
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
return startRow;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public int getTotalPages()
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
return totalPages;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public int getCurrentPage()
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
return currentPage;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public int getPageSize()
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
return pageSize;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public void setTotalRows( int totalRows)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
this .totalRows = totalRows;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public void setStartRow( int startRow)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
this .startRow = startRow;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public void setTotalPages( int totalPages)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
this .totalPages = totalPages;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public void setCurrentPage( int currentPage)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
this .currentPage = currentPage;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public void setPageSize( int pageSize)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
this .pageSize = pageSize;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public int getTotalRows()
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
return totalRows;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public void first()
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
currentPage = 1 ;
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
startRow = 0 ;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public void previous()
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
if (currentPage == 1 )
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
return ;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
currentPage -- ;
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
startRow = (currentPage - 1 ) * pageSize;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public void next()
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
if (currentPage < totalPages)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
currentPage ++ ;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
startRow = (currentPage - 1 ) * pageSize;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public void last()
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
currentPage = totalPages;
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
startRow = (currentPage - 1 ) * pageSize;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public void refresh( int _currentPage)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
currentPage = _currentPage;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
if (currentPage > totalPages)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
last();
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
PagerService 类,主要有个 getPager 方法返回 Pager 类。代码如下:
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
package com.game.commons;
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif)
public class PagerService
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
public Pager getPager(String currentPage,String pagerMethod, int totalRows)
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
// 定义pager对象,用于传到页面
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
Pager pager = new Pager(totalRows);
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
// 如果当前页号为空,表示为首次查询该页
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
// 如果不为空,则刷新pager对象,输入当前页号等信息
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
if (currentPage != null )
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
pager.refresh(Integer.parseInt(currentPage));
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
// 获取当前执行的方法,首页,前一页,后一页,尾页。
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
if (pagerMethod != null )
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
if (pagerMethod.equals( " first " ))
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
pager.first();
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
} else if (pagerMethod.equals( " previous " ))
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
pager.previous();
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
} else if (pagerMethod.equals( " next " ))
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
pager.next();
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif)
} else if (pagerMethod.equals( " last " ))
![](http://www.blogjava.net/Images/dot.gif)
{
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
pager.last();
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
return pager;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif)
}
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
这个分页方法比较简单,而且功能也齐全,许多页面级的开源 table 中分页很多也是基于这个原理,所以理解了这个分页,对其他各种分页技术的理解也就迎刃而解了。
服务层的代码就这些了,接下来就可以写 spring 的配置文件来用 spring 管理这些 Dao 和 Service 了。
在 spring-context 包中新建 applicationContext.xml 。配置的写法如下:
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
<? xml version="1.0" encoding="ISO-8859-1" ?>
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
<! DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< beans >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
<!-- dataSource config -->
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< bean id ="dataSource" class ="org.springframework.jndi.JndiObjectFactoryBean" >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< property name ="jndiName" >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< value > java:comp/env/jdbc/game </ value >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
</ property >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
</ bean >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
<!-- SessionFactory -->
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< bean id ="sessionFactory"
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
class ="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< property name ="dataSource" >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< ref bean ="dataSource" />
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
</ property >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< property name ="configLocation" >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< value > classpath:com/game/bean/hibernate/hibernate.cfg.xml </ value >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
</ property >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
</ bean >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
<!-- TransactionManager -->
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< bean id ="transactionManager"
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
class ="org.springframework.orm.hibernate3.HibernateTransactionManager" >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< property name ="sessionFactory" >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< ref local ="sessionFactory" />
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
</ property >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
</ bean >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
<!-- DAO -->
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< bean id ="productsDao" class ="com.game.products.dao.hibernate.ProductsMapDao" >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< property name ="sessionFactory" >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< ref bean ="sessionFactory" />
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
</ property >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
</ bean >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
<!-- Services -->
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< bean id ="productsService" class ="com.game.products.services.ProductsServiceImp" >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< property name ="productsDao" >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< ref bean ="productsDao" />
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
</ property >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
</ bean >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< bean id ="pagerService" class ="com.game.commons.PagerService" >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
</ bean >
</beans>
配置文件不难,主要是些 IOC 控制。数据库链接我采用的是数据源方式,需要在 tomcat 的conf文件夹下的 server.xml 中添加数据源,添加的数据如下:
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< Context path ="/game" docBase ="D:/tomcat-5.5.20/webapps/game" debug ="0" reloadable ="true" >
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
< Resource
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
name ="jdbc/game"
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
type ="javax.sql.DataSource"
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
password =""
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
driverClassName ="net.sourceforge.jtds.jdbc.Driver"
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
maxIdle ="2"
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
maxWait ="5000"
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
username ="sa"
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
url ="jdbc:jtds:sqlserver://127.0.0.1:16899/game"
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
maxActive ="4" />
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
</ Context >
这个数据源是针对 tomcat 5.5 以上版本的,以下版本的写法有所不同,不同之处可以用 google 搜索得知。这个数据源很简单,并没有过多的配置来优化系统,只是为了让项目更容易让人理解。需要注意都是,我的数据链接的JDBC包是jtds包,而不是普通的那个三个jar包。
相关文章推荐
- struts+spring+hibernate的web应用 Service层代码编写
- struts+spring+hibernate的web应用 Service层代码编写
- struts+spring+hibernate的web应用 Service层代码编写
- struts+spring+hibernate的web应用 Service层代码编写
- struts+spring+hibernate的web应用 Web层代码编写(1)
- struts+spring+hibernate的web应用 Web层代码编写(2)
- struts+spring+hibernate的web应用 Web层代码编写(1)
- struts+spring+hibernate的web应用 Dao层代码编写
- struts+spring+hibernate的web应用 Dao层代码编写
- struts+spring+hibernate的web应用 Web层代码编写(2)
- struts+spring+hibernate的web应用 Web层代码编写(1)
- struts+spring+hibernate的web应用 Web层代码编写(2)
- struts+spring+hibernate的web应用 Web层代码编写(2)
- struts+spring+hibernate的web应用 Dao层代码编写
- struts+spring+hibernate的web应用 Dao层代码编写
- struts+spring+hibernate的web应用 Web层代码编写(1)
- struts+spring+hibernate的web应用<三> Service层代码编写
- struts+spring+hibernate的web应用 架构搭建
- struts+spring+hibernate的web应用<二> Dao层代码编写
- struts+spring+hibernate的web应用 架构搭建