• 通用DAO和DaoImpl


      public interface GenericDao<T> {
     void create(T entity);
     void delete(T entity);
     void update(T entity);
     
     T findById(Serializable oid);
     List<T> findAll();
     PageModel<T> findByPager(int pageNo, int pageSize);
    }

    public class GenericDaoImpl<T> implements GenericDao<T> {
     
     private Class<T> entityClass;
     
     private String entityName;
     
     @SuppressWarnings("unchecked")
     public GenericDaoImpl(){
      //通过反射获取泛型的参数类型信息
      Type type = this.getClass().getGenericSuperclass();
      ParameterizedType pt = (ParameterizedType)type;
      
      Type argType = pt.getActualTypeArguments()[0];
      
      entityClass = (Class<T>)argType;
      
      this.entityName = entityClass.getName();
     }
     

     @Override
     public void create(T entity) {
      HibernateUtil.getSession().save(entity);
     }

     @Override
     public void delete(T entity) {
      HibernateUtil.getSession().delete(entity);
     }

     @SuppressWarnings("unchecked")
     @Override
     public List<T> findAll() {
    //  return HibernateUtil.getSession().createQuery("from " + entityName).list();
      return HibernateUtil.getSession()
           .createCriteria(entityClass)
           .list();
     }

     @SuppressWarnings("unchecked")
     @Override
     public T findById(Serializable oid) {
      return (T)HibernateUtil.getSession().load(entityClass, oid);
     }

     @SuppressWarnings("unchecked")
     @Override
     public PageModel<T> findByPager(int pageNo, int pageSize) {
      PageModel<T> pm = new PageModel<T>();
      
      //Integer temp = (Integer)HibernateUtil.getSession().createCriteria(entityClass).setProjection(Projections.rowCount()).uniqueResult();
      Long temp = (Long)HibernateUtil.getSession()
          .createQuery("select count(o) from " + entityName + " o")
          .uniqueResult();
      
      if(null != temp){
       pm.setRecordCount(temp.intValue());
       pm.setDatas(HibernateUtil.getSession()
         .createCriteria(entityClass)
         .setMaxResults(pageSize)
         .setFirstResult((pageNo - 1) * pageSize)
         .list());
      }
      
      return pm;
     }

     @SuppressWarnings("unchecked")
     @Override
     public void update(T entity) {
      HibernateUtil.getSession().update(entity);
     }
     
    }

    分页实体类PageModel

    public class PageModel<T> implements Serializable {


    private static final long serialVersionUID = -3461444186416298464L;

    private long recordCount; //总记录数

    private List<T> data; //分页数据列表

    private int pageNo = 1; //当前页号

    private int pageSize = 10; //每页显示的行数

    private int pageCount; //总页数

    public long getRecordCount() {

    return recordCount;

    }

    public void setRecordCount(long recordCount) {

    this.recordCount = recordCount;

    }

    public List<T> getData() {

    return data;

    }

    public void setData(List<T> data) {

    this.data = data;

    }

    public int getPageNo() {

    if(pageNo < 1){

    pageNo = 1;

    }

    if(pageNo > getPageCount()){

    pageNo = pageCount;

    }

    return pageNo;

    }

    public void setPageNo(int pageNo) {

    this.pageNo = pageNo;

    }

    public int getPageSize() {

    return pageSize;

    }

    public void setPageSize(int pageSize) {

    this.pageSize = pageSize;

    }

    public int getPageCount() {

    pageCount = (int)((recordCount + pageSize - 1) / pageSize);

    return pageCount;

    }

    public void setPageCount(int pageCount) {

    this.pageCount = pageCount;

    }

    }

    其他的类或是接口只需要extends

  • 相关阅读:
    简析时序数据库 InfluxDB
    tensorflow_1.x(四):线性回归问题初步(准备数据、构建模型、训练模型、进行预测)
    (二) 差分隐私直观理解
    (一) 差分隐私
    (四)PyTorch 的 torch.backends.cudnn.benchmark
    (三)PyTorch 的 Autograd
    (二)PyTorch 中的 tensor 及使用
    (一)PyTorch 中的 ModuleList 和 Sequential
    文本分类(六):不平衡文本分类,Focal Loss理论及PyTorch实现
    tensorflow_1.x(三):Tensorflow2入门(基础、张量、常量与变量、变量的赋值、计算模型、图执行模式、兼容1.0、会话、变量、占位符、feed提交数据)
  • 原文地址:https://www.cnblogs.com/java20130726/p/3218464.html
Copyright © 2020-2023  润新知