JAVA:用泛型与反射技术封装分页功能
来源:优易学  2011-3-12 10:52:18   【优易学:中国教育考试门户网】   资料下载   IT书店
 DAO.java
  public interface DAO {
  /**
  * 1.获取所要显示的分页数据(一般以list形式来存放)
  * 2.获取记录的总数(计算总页数)
  * 3.需要定义一个返回类型,获取两个参数
  * @param <T>
  * @param entityClass 实体类
  * @param firstindex 开始索引
  * @param maxresult 需要获取记录数
  * @return
  */
  public <T> QueryResult<T> getScrollData(Class<T> entityClass, int firstindex, int maxresult);}
  QueryResult.java(需要定义一个返回类型,获取两个参数)
  package com.itcast.bean;
  import java.util.List;
  public class QueryResult<T> {
  private List<T> resultlist;
  private long totalrecord;
  public List<T> getResultlist(){
  return resultlist;
  }
  public void setResultlist(List<T> resultlist) {
  this.resultlist = resultlist;
  }
  public long getTotalrecord() {
  return totalrecord;
  }
  public void setTotalrecord(long totalrecord) {
  this.totalrecord = totalrecord;
  }
  }
  DaoSupport.java
  import com.itcast.bean.QueryResult;
  public abstract class DaoSupport implements DAO {
  @SuppressWarnings("unchecked")
  @Override
  @Transactional(readOnly=true,propagation=Propagation.NOT_SUPPORTED)
  public <T> QueryResult<T> getScrollData(Class<T> entityClass, int firstindex, int maxresult) {
  //创建查询对象
  QueryResult qr = new QueryResult<T>();
  //获取实体名称
  String entityname = getEntityName(entityClass);
  Query query = em.createQuery("select o from "+entityname+" o");
  query.setFirstResult(firstindex).setMaxResults(maxresult);
  qr.setResultlist(query.getResultList());
  query = em.createQuery("select count(o) from "+entityname+" o");
  qr.setTotalrecord((Long)query.getSingleResult());
  return qr;
  }
  /**
  * 获取实体名称
  * @param <T>
  * @param entityClass实体类
  * @return
  */
  protected <T> String getEntityName(Class<T> entityClass){
  String entityname = entityClass.getSimpleName();
  Entity entity = entityClass.getAnnotation(Entity.class);
  if(entity.name()!=null && !"".equals(entity.name())){
  entityname = entity.name();
  }
  return entityname;
  }
  }

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训