struts+spring+hibernate的web应用<三> Service层代码编写
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);//根据条件查询的一段记录
}
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;
????}
}
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();
????????}
????}
}
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;
????}
}
<?xml?version="1.0"?encoding="ISO-8859-1"?>
<!DOCTYPE?beans?PUBLIC?"-//SPRING//DTD?BEAN//EN"?"http://www.springframework.org/dtd/spring-beans.dtd">
?
<beans>
????<!--?dataSource?config?-->
????<bean?id="dataSource"?class="org.springframework.jndi.JndiObjectFactoryBean">
????????<property?name="jndiName">
????????????<value>java:comp/env/jdbc/game</value>
????????</property>
????</bean>
<!--?SessionFactory?-->
????<bean?id="sessionFactory"
????????class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
????????<property?name="dataSource">
????????????<ref?bean="dataSource"/>
????????</property>
????????<property?name="configLocation">
????????????<value>classpath:com\game\bean\hibernate\hibernate.cfg.xml</value>
????????</property>????????
????</bean>
????
????<!--?TransactionManager??-->
????<bean?id="transactionManager"
????????class="org.springframework.orm.hibernate3.HibernateTransactionManager">
????????<property?name="sessionFactory">
????????????<ref?local="sessionFactory"/>
????????</property>
????</bean>
<!--?DAO?-->
????<bean?id="productsDao"?class="com.game.products.dao.hibernate.ProductsMapDao">
????????<property?name="sessionFactory">
????????????<ref?bean="sessionFactory"/>
????????</property>
????</bean>
????
????<!--?Services?-->
?????<bean?id="productsService"?class="com.game.products.services.ProductsServiceImp">
????????<property?name="productsDao">
????????????<ref?bean="productsDao"/>
????????</property>
????</bean>?
<bean?id="pagerService"?class="com.game.commons.PagerService">
????</bean>
</beans>
<Context?path="/game"?docBase="D:\tomcat-5.5.20\webapps\game"?debug="0"?reloadable="true">
????????<Resource
????????????name="jdbc/game"
????????????type="javax.sql.DataSource"
????????????password=""
????????????driverClassName="net.sourceforge.jtds.jdbc.Driver"
????????????maxIdle="2"
????????????maxWait="5000"
????????????username="sa"
????????????url="jdbc:jtds:sqlserver://127.0.0.1:16899/game"
????????????maxActive="4"/>
????????</Context>
这个数据源是针对tomcat 5.5以上版本的,以下版本的写法有所不同,不同之处可以用google搜索得知。这个数据源很简单,并没有过多的配置来优化系统,只是为了让项目更容易让人理解。需要注意都是,我的数据链接的JDBC包是jtds包,而不是普通的那个三个jar包。