日期:2014-05-16 浏览次数:21068 次
六、定义基本类
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,抽象出所有实体通用的方法,方便其他类继承就可以