日期:2014-05-16 浏览次数:20801 次
六、定义基本类
1)定义Action基本类-主要定义request,session等
?
BaseAction.java
package ssh.base; import com.opensymphony.xwork2.ActionSupport; import org.apache.struts2.interceptor.ApplicationAware; import org.apache.struts2.interceptor.RequestAware; import org.apache.struts2.interceptor.ServletResponseAware; import org.apache.struts2.interceptor.SessionAware; import java.util.Map; import javax.servlet.http.HttpServletResponse; public class BaseAction extends ActionSupport implements RequestAware,SessionAware, ApplicationAware,ServletResponseAware{ private static final long serialVersionUID = 4818541693118631758L; public Map<String, Object> request; //一般少用,因为value stack里就是request public Map<String, Object> session; public Map<String, Object> application;//基本不用。可以放数据库或者放在一个CLASS里面 public HttpServletResponse response; //ServletActionContext.getRequest()同样也可以直接去的request public void setRequest(Map<String, Object> request) { this.request=request; } public void setSession(Map<String, Object> session) { this.session=session; } public void setApplication(Map<String, Object> application) { this.application=application; } public void setServletResponse(HttpServletResponse response) { this.response=response; } }
??
?
2)定义接口DAO类,主要定义CURD,分页等基本相同的接口
?
DAO.java
package ssh.base; import java.util.LinkedHashMap; import ssh.utils.QueryResult; public interface DAO { //保存数据 public void save(Object entity); //更新数据 public void update(Object entity); //删除单条记录 public <T> void delete(Class<T> entityClass,Object entityId); //删除多条记录 public <T> void delete(Class<T> entityClass,Object[] entityIds); //查找指定ID的实体类数据 public <T> T find(Class<T> entityClass,Object entityId); //在方法上定义泛型需要在方法上写<X>,,第一个T是定义泛型,第2个T是返回类型 /** * 获得分页数据 * QueryResult<T> 泛型定义在类上。因为需要返回查询的数据List,和查询的总条数,所以需要自定义类型返回2个数据 * @param <T> 泛型 * @param entityClass 实体类 * @param firstIndex 开始索引 * @param maxResult 需要获取的记录数 * @param wherejpql where条件语句 * @param queryParams 条件语句参数 * @param orderby 排序,LinkedHashMap先进先出,使用这个是因为先进去的放到第一位,order by key1 desc,key2 asc * @return */ public <T> QueryResult<T> getScrollData(Class<T> entityClass,int firstIndex, int maxResult, String wherejpql,Object[] queryParams,LinkedHashMap<String, String> orderby); public <T> QueryResult<T> getScrollData(Class<T> entityClass,int firstIndex, int maxResult,String wherejpql,Object[] queryParams); public <T> QueryResult<T> getScrollData(Class<T> entityClass,int firstIndex, int maxResult,LinkedHashMap<String, String> orderby); public <T> QueryResult<T> getScrollData(Class<T> entityClass,int firstIndex, int maxResult); public <T> QueryResult<T> getScrollData(Class<T> entityClass); }
?
?
?3)定义实现DAO基本接口的DAOImpl的实现类,供其他实现类直接继承
??? 而且必须写@Component注入给Spring管理,然后注入hibernateTemplate,使用protected,其他类继承后可以直接使用
?
DaoSupport.java
package ssh.base; import java.io.Serializable; import java.sql.SQLException; import java.util.LinkedHashMap; import java.util.List; import javax.annotation.Resource; import javax.persistence.Entity; import ssh.utils.QueryResult; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.HibernateTemplate; import org.springframework.stereotype.Component; //定义抽象类继承DAO,抽象出所有实体通用的方法,方便其他类继承就可以