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

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

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

    七郎's JavaBlog

    草木竹石皆可為劒。至人之用人若鏡,不將不迎,應而不藏,故能勝物而不傷。
    posts - 60, comments - 14, trackbacks - 0, articles - 0
    Hibernate3提供了DetachedCriteria,使得我們可以在Web層構造detachedCriteria,然后調用業務層Bean,進行動態條件查詢,根據這一功能,我設計了通用的抽象Bean基類和分頁類支持,代碼來自于Quake Wang的javaeye-core包的相應類,然后又做了很多修改。

    分頁支持類:

    java代碼: 


    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()上一頁索引

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲国产精品嫩草影院在线观看| 亚洲AV无码一区二区三区牛牛| 91久久青青草原线免费| 亚洲区视频在线观看| 日产国产精品亚洲系列| 日本中文字幕免费高清视频| 33333在线亚洲| 国产成人亚洲精品影院| 91频在线观看免费大全| 国产99精品一区二区三区免费| 亚洲人和日本人jizz| 久久亚洲欧洲国产综合| 久久受www免费人成_看片中文| 特a级免费高清黄色片| 亚洲欧洲自拍拍偷午夜色| 亚洲精品无码久久久久AV麻豆| 84pao强力永久免费高清| 日日摸日日碰夜夜爽亚洲| 亚洲综合久久1区2区3区| 亚洲欧洲久久av| 国产精品无码免费播放| 成全视频高清免费观看电视剧| 亚洲国产AV一区二区三区四区| 亚洲av福利无码无一区二区| 又黄又大又爽免费视频| 美女被免费喷白浆视频| 日韩精品免费在线视频| 国产AV日韩A∨亚洲AV电影| 亚洲同性男gay网站在线观看| 中文字幕精品亚洲无线码二区| 四虎在线视频免费观看| 亚洲大片免费观看| 你懂的网址免费国产| 鲁死你资源站亚洲av| 亚洲一区二区三区高清视频| 国产AV无码专区亚洲A∨毛片| 亚洲高清免费视频| 在线免费观看国产视频| AA免费观看的1000部电影| 99国产精品免费观看视频| 中文字幕在线免费观看视频|