<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); 這行給我啟發。謝謝  回復  更多評論
      

    主站蜘蛛池模板: 亚洲线精品一区二区三区影音先锋| 国产在线观看www鲁啊鲁免费| 亚洲精品无码永久中文字幕| 日本一区二区三区在线视频观看免费 | 美景之屋4在线未删减免费| 精品久久洲久久久久护士免费 | 亚洲精品在线不卡| 黄色网址免费观看| 亚洲中文字幕乱码AV波多JI| 女人与禽交视频免费看| 亚洲AV成人片无码网站| 亚洲av手机在线观看| 国产精品青草视频免费播放| 亚洲精品狼友在线播放| 老汉精品免费AV在线播放| 亚洲无限乱码一二三四区| 成人人观看的免费毛片| 美女无遮挡免费视频网站| 精品国产亚洲一区二区在线观看| 最好免费观看高清在线| 亚洲精品美女久久久久9999| 无码少妇一区二区浪潮免费| 国产亚洲精品仙踪林在线播放| 国产亚洲精品免费视频播放| 99re在线视频免费观看| 亚洲AV成人影视在线观看| 亚洲精品无码日韩国产不卡?V| 免费在线中文日本| 亚洲视频在线观看2018| 亚洲性在线看高清h片| 222www免费视频| 激情小说亚洲色图| 亚洲AV无码专区亚洲AV伊甸园| 黄+色+性+人免费| 一级毛片免费在线播放| 亚洲精品网站在线观看你懂的| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 一级日本高清视频免费观看| 亚洲高清无在码在线电影不卡| 国产色爽女小说免费看| A片在线免费观看|