<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    konhon

    忘掉過去,展望未來。找回自我,超越自我。
    逃避不一定躲的過, 面對不一定最難過, 孤單不一定不快樂, 得到不一定能長久, 失去不一定不再擁有, 可能因為某個理由而傷心難過, 但我卻能找個理由讓自己快樂.

    Google

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      203 Posts :: 0 Stories :: 61 Comments :: 0 Trackbacks
    Hibernate3提供了DetachedCriteria,使得我們可以在Web層構造detachedCriteria,然后調用業務層Bean,進行動態條件查詢,根據這一功能,我設計了通用的抽象Bean基類和分頁類支持,代碼來自于Quake Wang的javaeye-core包的相應類,然后又做了很多修改。

    分頁支持類:
    package?com.javaeye.common.util;?

    import?java.util.List;?

    public?class?PaginationSupport?{?

    ????????
    public?final?static?int?PAGESIZE?=?30;?

    ????????
    private?int?pageSize?=?PAGESIZE;?

    ????????
    private?List?items;?

    ????????
    private?int?totalCount;?

    ????????
    private?int[]?indexes?=?new?int[0];?

    ????????
    private?int?startIndex?=?0;?

    ????????
    public?PaginationSupport(List?items,?int?totalCount)?{?
    ????????????????setPageSize(PAGESIZE);?
    ????????????????setTotalCount(totalCount);?
    ????????????????setItems(items);????????????????
    ????????????????setStartIndex(
    0);?
    ????????}?

    ????????
    public?PaginationSupport(List?items,?int?totalCount,?int?startIndex)?{?
    ????????????????setPageSize(PAGESIZE);?
    ????????????????setTotalCount(totalCount);?
    ????????????????setItems(items);????????????????
    ????????????????setStartIndex(startIndex);?
    ????????}?

    ????????
    public?PaginationSupport(List?items,?int?totalCount,?int?pageSize,?int?startIndex)?{?
    ????????????????setPageSize(pageSize);?
    ????????????????setTotalCount(totalCount);?
    ????????????????setItems(items);?
    ????????????????setStartIndex(startIndex);?
    ????????}?

    ????????
    public?List?getItems()?{?
    ????????????????
    return?items;?
    ????????}?

    ????????
    public?void?setItems(List?items)?{?
    ????????????????
    this.items?=?items;?
    ????????}?

    ????????
    public?int?getPageSize()?{?
    ????????????????
    return?pageSize;?
    ????????}?

    ????????
    public?void?setPageSize(int?pageSize)?{?
    ????????????????
    this.pageSize?=?pageSize;?
    ????????}?

    ????????
    public?int?getTotalCount()?{?
    ????????????????
    return?totalCount;?
    ????????}?

    ????????
    public?void?setTotalCount(int?totalCount)?{?
    ????????????????
    if?(totalCount?>?0)?{?
    ????????????????????????
    this.totalCount?=?totalCount;?
    ????????????????????????
    int?count?=?totalCount?/?pageSize;?
    ????????????????????????
    if?(totalCount?%?pageSize?>?0)?
    ????????????????????????????????count
    ++;?
    ????????????????????????indexes?
    =?new?int[count];?
    ????????????????????????
    for?(int?i?=?0;?i?<?count;?i++)?{?
    ????????????????????????????????indexes[i]?
    =?pageSize?*?i;?
    ????????????????????????}?
    ????????????????}?
    else?{?
    ????????????????????????
    this.totalCount?=?0;?
    ????????????????}?
    ????????}?

    ????????
    public?int[]?getIndexes()?{?
    ????????????????
    return?indexes;?
    ????????}?

    ????????
    public?void?setIndexes(int[]?indexes)?{?
    ????????????????
    this.indexes?=?indexes;?
    ????????}?

    ????????
    public?int?getStartIndex()?{?
    ????????????????
    return?startIndex;?
    ????????}?

    ????????
    public?void?setStartIndex(int?startIndex)?{?
    ????????????????
    if?(totalCount?<=?0)?
    ????????????????????????
    this.startIndex?=?0;?
    ????????????????
    else?if?(startIndex?>=?totalCount)?
    ????????????????????????
    this.startIndex?=?indexes[indexes.length?-?1];?
    ????????????????
    else?if?(startIndex?<?0)?
    ????????????????????????
    this.startIndex?=?0;?
    ????????????????
    else?{?
    ????????????????????????
    this.startIndex?=?indexes[startIndex?/?pageSize];?
    ????????????????}?
    ????????}?

    ????????
    public?int?getNextIndex()?{?
    ????????????????
    int?nextIndex?=?getStartIndex()?+?pageSize;?
    ????????????????
    if?(nextIndex?>=?totalCount)?
    ????????????????????????
    return?getStartIndex();?
    ????????????????
    else?
    ????????????????????????
    return?nextIndex;?
    ????????}?

    ????????
    public?int?getPreviousIndex()?{?
    ????????????????
    int?previousIndex?=?getStartIndex()?-?pageSize;?
    ????????????????
    if?(previousIndex?<?0)?
    ????????????????????????
    return?0;?
    ????????????????
    else?
    ????????????????????????
    return?previousIndex;?
    ????????}?

    }

    抽象業務類
    java代碼:?
    /**?
    *?Created?on?2005-7-12?
    */?
    package?com.javaeye.common.business;?

    import?java.io.Serializable;?
    import?java.util.List;?

    import?org.hibernate.Criteria;?
    import?org.hibernate.HibernateException;?
    import?org.hibernate.Session;?
    import?org.hibernate.criterion.DetachedCriteria;?
    import?org.hibernate.criterion.Projections;?
    import?org.springframework.orm.hibernate3.HibernateCallback;?
    import?org.springframework.orm.hibernate3.support.HibernateDaoSupport;?

    import?com.javaeye.common.util.PaginationSupport;?

    public?abstract?class?AbstractManager?extends?HibernateDaoSupport?{?

    ????????
    private?boolean?cacheQueries?=?false;?

    ????????
    private?String?queryCacheRegion;?

    ????????
    public?void?setCacheQueries(boolean?cacheQueries)?{?
    ????????????????
    this.cacheQueries?=?cacheQueries;?
    ????????}?

    ????????
    public?void?setQueryCacheRegion(String?queryCacheRegion)?{?
    ????????????????
    this.queryCacheRegion?=?queryCacheRegion;?
    ????????}?

    ????????
    public?void?save(final?Object?entity)?{?
    ????????????????getHibernateTemplate().save(entity);?
    ????????}?

    ????????
    public?void?persist(final?Object?entity)?{?
    ????????????????getHibernateTemplate().save(entity);?
    ????????}?

    ????????
    public?void?update(final?Object?entity)?{?
    ????????????????getHibernateTemplate().update(entity);?
    ????????}?

    ????????
    public?void?delete(final?Object?entity)?{?
    ????????????????getHibernateTemplate().delete(entity);?
    ????????}?

    ????????
    public?Object?load(final?Class?entity,?final?Serializable?id)?{?
    ????????????????
    return?getHibernateTemplate().load(entity,?id);?
    ????????}?

    ????????
    public?Object?get(final?Class?entity,?final?Serializable?id)?{?
    ????????????????
    return?getHibernateTemplate().get(entity,?id);?
    ????????}?

    ????????
    public?List?findAll(final?Class?entity)?{?
    ????????????????
    return?getHibernateTemplate().find("from?"?+?entity.getName());?
    ????????}?

    ????????
    public?List?findByNamedQuery(final?String?namedQuery)?{?
    ????????????????
    return?getHibernateTemplate().findByNamedQuery(namedQuery);?
    ????????}?

    ????????
    public?List?findByNamedQuery(final?String?query,?final?Object?parameter)?{?
    ????????????????
    return?getHibernateTemplate().findByNamedQuery(query,?parameter);?
    ????????}?

    ????????
    public?List?findByNamedQuery(final?String?query,?final?Object[]?parameters)?{?
    ????????????????
    return?getHibernateTemplate().findByNamedQuery(query,?parameters);?
    ????????}?

    ????????
    public?List?find(final?String?query)?{?
    ????????????????
    return?getHibernateTemplate().find(query);?
    ????????}?

    ????????
    public?List?find(final?String?query,?final?Object?parameter)?{?
    ????????????????
    return?getHibernateTemplate().find(query,?parameter);?
    ????????}?

    ????????
    public?PaginationSupport?findPageByCriteria(final?DetachedCriteria?detachedCriteria)?{?
    ????????????????
    return?findPageByCriteria(detachedCriteria,?PaginationSupport.PAGESIZE,?0);?
    ????????}?

    ????????
    public?PaginationSupport?findPageByCriteria(final?DetachedCriteria?detachedCriteria,?final?int?startIndex)?{?
    ????????????????
    return?findPageByCriteria(detachedCriteria,?PaginationSupport.PAGESIZE,?startIndex);?
    ????????}?

    ????????
    public?PaginationSupport?findPageByCriteria(final?DetachedCriteria?detachedCriteria,?final?int?pageSize,?
    ????????????????????????
    final?int?startIndex)?{?
    ????????????????
    return?(PaginationSupport)?getHibernateTemplate().execute(new?HibernateCallback()?{?
    ????????????????????????
    public?Object?doInHibernate(Session?session)?throws?HibernateException?{?
    ????????????????????????????????Criteria?criteria?
    =?detachedCriteria.getExecutableCriteria(session);?
    ????????????????????????????????
    int?totalCount?=?((Integer)?criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue();?
    ????????????????????????????????criteria.setProjection(
    null);?
    ????????????????????????????????List?items?
    =?criteria.setFirstResult(startIndex).setMaxResults(pageSize).list();?
    ????????????????????????????????PaginationSupport?ps?
    =?new?PaginationSupport(items,?totalCount,?pageSize,?startIndex);?
    ????????????????????????????????
    return?ps;?
    ????????????????????????}?
    ????????????????},?
    true);?
    ????????}?

    ????????
    public?List?findAllByCriteria(final?DetachedCriteria?detachedCriteria)?{?
    ????????????????
    return?(List)?getHibernateTemplate().execute(new?HibernateCallback()?{?
    ????????????????????????
    public?Object?doInHibernate(Session?session)?throws?HibernateException?{?
    ????????????????????????????????Criteria?criteria?
    =?detachedCriteria.getExecutableCriteria(session);?
    ????????????????????????????????
    return?criteria.list();?
    ????????????????????????}?
    ????????????????},?
    true);?
    ????????}?

    ????????
    public?int?getCountByCriteria(final?DetachedCriteria?detachedCriteria)?{?
    ????????????????Integer?count?
    =?(Integer)?getHibernateTemplate().execute(new?HibernateCallback()?{?
    ????????????????????????
    public?Object?doInHibernate(Session?session)?throws?HibernateException?{?
    ????????????????????????????????Criteria?criteria?
    =?detachedCriteria.getExecutableCriteria(session);?
    ????????????????????????????????
    return?criteria.setProjection(Projections.rowCount()).uniqueResult();?
    ????????????????????????}?
    ????????????????},?
    true);?
    ????????????????
    return?count.intValue();?
    ????????}?
    }?
    用戶在web層構造查詢條件detachedCriteria,和可選的startIndex,調用業務bean的相應findByCriteria方法,返回一個PaginationSupport的實例ps。

    ps.getItems()得到已分頁好的結果集
    ps.getIndexes()得到分頁索引的數組
    ps.getTotalCount()得到總結果數
    ps.getStartIndex()當前分頁索引
    ps.getNextIndex()下一頁索引
    ps.getPreviousIndex()上一頁索引

    ?

    ?

    posted on 2006-04-06 21:37 konhon 優華 閱讀(1529) 評論(1)  編輯  收藏 所屬分類: Hibernate

    Feedback

    # re: 應用Hibernate3的DetachedCriteria實現分頁查詢 2014-02-26 07:09 qinxike
    學習了,在findPageByCriteria()中,還以為共享一個Critreria行不通了, criteria.setProjection(null); 這行給我啟發。謝謝  回復  更多評論
      

    主站蜘蛛池模板: 久久亚洲2019中文字幕| 一级特黄色毛片免费看| 国产av无码专区亚洲av桃花庵 | 亚洲人成人一区二区三区| 午夜男人一级毛片免费| 欧洲精品99毛片免费高清观看| 国产精品极品美女自在线观看免费| 亚洲最大中文字幕无码网站 | 日韩免费无码视频一区二区三区| 农村寡妇一级毛片免费看视频| 91在线亚洲综合在线| 亚洲理论片中文字幕电影| 亚洲va久久久噜噜噜久久| 亚洲精品国产精品乱码不卞| 日本一道高清不卡免费| 成年人免费网站在线观看| 欧洲一级毛片免费| 99爱免费观看视频在线| 久久狠狠躁免费观看2020| a在线观看免费视频| yellow视频免费在线观看| 美女黄色免费网站| 在线精品自拍亚洲第一区| 亚洲成a人无码亚洲成av无码| 国产AV旡码专区亚洲AV苍井空| 亚洲福利电影一区二区?| 亚洲色av性色在线观无码| 色播亚洲视频在线观看| 亚洲国产精品久久久久婷婷软件| 亚洲大尺度无码专区尤物| 亚洲日韩精品无码专区网址| 亚洲无码在线播放| 国产亚洲一区二区三区在线观看| 国产亚洲精品拍拍拍拍拍| 亚洲中文字幕无码永久在线 | 午夜在线免费视频| 一级免费黄色毛片| 国产一级黄片儿免费看| 色www永久免费| 久久久久成人精品免费播放动漫| 久久久久久一品道精品免费看|