SSH BaseDao代碼

來源:互聯網
上載者:User
/*********************************************** * 基礎DAO,所有的方法都在此實現 *  * @author chen.lin * @version 1.0 ************************************************/@SuppressWarnings("all")//@Repository(value="baseDAO")public class BaseDAO<T> extends HibernateDaoSupport implements IBaseDAO<T> {    private Class<T> clazz;    private Class<T> getClazz(){        if (clazz == null) {//擷取泛型的Class對象            clazz = ((Class<T>) (((ParameterizedType)(this.getClass().getGenericSuperclass())).getActualTypeArguments()[0]));        }        return clazz;    }    @Resource(name="sessionFactory")    public void setSuperSessionFactory(SessionFactory sessionFactory){        super.setSessionFactory(sessionFactory);    }    @Override    public void add(T t) {        this.getHibernateTemplate().save(t);    }    @Override    public void del(Serializable id) {        T t = load(id);        this.getHibernateTemplate().delete(t);    }    @Override    public void update(T t) {        this.getHibernateTemplate().update(t);    }    @Override    public T load(Serializable id) {        return this.getHibernateTemplate().load(getClazz(), id);    }    @Override    public T get(Serializable id) {        return this.getHibernateTemplate().get(getClazz(), id);    }    @Override    public List<T> list(String hql, Object... objs) {        Query query = getQuery(hql, objs);        return query.list();    }    @Override    public List<T> list(String hql) {        return list(hql,null);    }    /**     * 獲得hibernate查詢query     * @param hql     * @param objs     * @return     */    private Query getQuery(String hql, Object... objs){        Query query = this.getSession().createQuery(hql);        if (objs != null && objs.length > 0) {            for (int i = 0; i < objs.length; i++) {                query.setParameter(i, objs[i]);             }        }        return query;    }    /**     * 獲得查詢總數的hql     * @param hql     * @return     */    private String getCountHQL(String hql){        String s = hql.substring(0,hql.indexOf("from"));        if(s==null||"".equals(s.trim())) {            hql = "select count(*) "+hql;        } else {            hql = hql.replace(s, "select count(*) ");        }        hql = hql.replace("fetch", "");        if (hql.contains("order")) {            hql = hql.substring(0, hql.indexOf("order"));        }        System.out.println("hql----------->" + hql);        return hql;    }    @Override    public Pager<T> find(String hql, Object... objs) {        Integer pageSize = SystemContext.getPageSize();        Integer pageOffset = SystemContext.getPageOffset();        if(pageSize<=0) pageSize = 10;        if(pageOffset<0) pageOffset = 0;        Query q = getQuery(hql, objs);        q.setFirstResult(pageOffset).setMaxResults(pageSize);        String cHql = getCountHQL(hql);        Query cq = getQuery(cHql, objs);        Pager<T> pager = new Pager<T>();        pager.setPageOffset(pageOffset);        pager.setPageSize(pageSize);        List<T> datas = q.list();        pager.setDatas(datas);        long totalRecord = (Long)cq.uniqueResult();        System.out.println("totalRecord--->" + totalRecord);        pager.setTotalRecord(Integer.parseInt(totalRecord + ""));        pager.setTotalPage(Integer.parseInt(((totalRecord + pageSize - 1) / pageSize) + ""));        return pager;    }    @Override    public Pager<T> find(String hql) {        return this.find(hql,null);    }    @Override    public Pager<Object> findObj(String hql, Object... objs) {        Integer pageSize = SystemContext.getPageSize();        Integer pageOffset = SystemContext.getPageOffset();        if(pageSize<=0) pageSize = 10;        if(pageOffset<0) pageOffset = 0;        Query q = getQuery(hql, objs);        q.setFirstResult(pageOffset).setMaxResults(pageSize);        String cHql = getCountHQL(hql);        Query cq = getQuery(cHql, objs);        Pager<Object> pager = new Pager<Object>();        pager.setPageOffset(pageOffset);        pager.setPageSize(pageSize);        List<Object> datas = q.list();        pager.setDatas(datas);        long totalRecord = (Long)cq.uniqueResult();        System.out.println("totalRecord--->" + totalRecord);        pager.setTotalRecord(Integer.parseInt(totalRecord + ""));        pager.setTotalPage(Integer.parseInt(((totalRecord + pageSize - 1) / pageSize) + ""));        return pager;    }    @Override    public Pager<Object> findObj(String hql) {        return this.findObj(hql,null);    }    @Override    public Object queryByHql(String hql, Object... objs) {        Query query = getQuery(hql, objs);        List list = query.list();        if (list != null && list.size() > 0) {            return list.get(0);        }        return null;        //return this.getHibernateTemplate().find(hql, objs).get(0);    }    @Override    public Object queryByHql(String hql) {        return queryByHql(hql,null);    }    @Override    public void executeByHql(String hql, Object... objs) {        getQuery(hql, objs).executeUpdate();    }    @Override    public void executeByHql(String hql) {        executeByHql(hql,null);    }    @Override    public List<Object> findALL(String hql, Object... objs) {        return this.getHibernateTemplate().find(hql, objs);    }    @Override    public List<Object> findALL(String hql) {        return findALL(hql,null);    }    @Override    public void addObj(Object obj) {        this.getHibernateTemplate().save(obj);    }    @Override    public void updateObj(Object obj) {        this.getHibernateTemplate().update(obj);    }    @Override    public void del(T t) {        this.getHibernateTemplate().delete(t);    }    @Override    public List<Object> listByObj(String hql, Object... objs) {        return this.getHibernateTemplate().find(hql, objs);    }}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.