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

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


    網站導航:
     
    主站蜘蛛池模板: 91精品手机国产免费| 国产精品免费播放| 亚洲av综合日韩| 亚洲一区二区三区偷拍女厕| 91热成人精品国产免费| 国产成人亚洲综合a∨| 亚洲国产精品lv| 白白国产永久免费视频| 久久免费国产视频| 精品亚洲成a人在线观看| 亚洲va中文字幕无码久久| 成年女人色毛片免费看| 中文字幕无码免费久久9一区9| 亚洲精品无码久久久久久久 | 成年女人A毛片免费视频| 亚洲视频在线一区二区三区| 国产嫩草影院精品免费网址| 99久久精品国产免费| 深夜a级毛片免费无码| 亚洲国产精品专区| 中文字幕不卡亚洲| 国产免费直播在线观看视频| 3344免费播放观看视频| 美女被免费网站91色| 大桥未久亚洲无av码在线| 亚洲香蕉在线观看| 久久亚洲美女精品国产精品| 亚洲无码日韩精品第一页| 午夜免费福利影院| 国产在线jyzzjyzz免费麻豆| 爽爽爽爽爽爽爽成人免费观看| 亚洲成在人线在线播放无码| 亚洲成人网在线播放| 亚洲电影一区二区三区| 在线观看亚洲天天一三视| 国产一精品一aⅴ一免费| 成人免费毛片视频| 很黄很色很刺激的视频免费| 免费无码中文字幕A级毛片| 东北美女野外bbwbbw免费| 大片免费观看92在线视频线视频|