首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Hibernate中查询数据分页打包

2012-08-24 
Hibernate中查询数据分页封装public T ListT listForPagenate(Criteria criteria,PaginatedListImpl c

Hibernate中查询数据分页封装

public <T> List<T> listForPagenate(Criteria criteria,PaginatedListImpl command){                if ( command.getSortCriterion() != null) {            if (command.getSortDirection().equals(SortOrderEnum.ASCENDING)) {                criteria.addOrder(Order.asc(command.getSortCriterion()));            }            if (command.getSortDirection().equals(SortOrderEnum.DESCENDING)) {                criteria.addOrder(Order.desc(command.getSortCriterion()));            }        }        criteria.setFirstResult(command.getFirstRecordIndex());        criteria.setMaxResults(command.getPageSize());        List<T> list = list(criteria);        return list;}public <T> List<T> listForNonPagenate(Criteria criteria,PaginatedListImpl command){                if ( command.getSortCriterion() != null) {            if (command.getSortDirection().equals(SortOrderEnum.ASCENDING)) {                criteria.addOrder(Order.asc(command.getSortCriterion()));            }            if (command.getSortDirection().equals(SortOrderEnum.DESCENDING)) {                criteria.addOrder(Order.desc(command.getSortCriterion()));            }        }        List<T> list = list(criteria);        return list;}public int getRowNumberByCriteria(Criteria criteria){  Projection projection = null;ResultTransformer resultTransformer = null;if( criteria instanceof CriteriaImpl ){projection = ((CriteriaImpl)criteria).getProjection();resultTransformer = ((CriteriaImpl)criteria).getResultTransformer();}Integer count = (Integer)criteria.setProjection(Projections.rowCount()).uniqueResult();criteria.setProjection(projection).setResultTransformer(resultTransformer);return count;  }

?

dataDictionaryCommand.setTotalNumberOfRows(getRowNumberByCriteria(criteria));List<SystemDictionary> results = listForPagenate(criteria,dataDictionaryCommand);dataDictionaryCommand.setList(results);

?

package com.accor.crm.util;import java.util.List;import javax.servlet.http.HttpServletRequest;import org.displaytag.properties.SortOrderEnum;/** * <code>com.gorti.project.web.ui.action.PaginatedListImpl</code> implemnts * </code>com.gorti.project.web.ui.action.IExtendedPaginatedList</code> This * class can be used for pagination purpose. This class depends upon * HttpServletRequest object. To be used by Controllers in case of Http * requests. *  * @author   */public class PaginatedListImpl implements ExtendedPaginatedList {private Integer pageInput;    /** current page index, starts at 0 */    private int index;    /** number of results per page (number of rows per page to be displayed ) */    private int pageSize = 20;    /** total number of results (the total number of rows ) */    private int fullListSize;    /** list of results (rows found ) in the current page */    @SuppressWarnings("unchecked")    private List list;    /** default sorting order */    private SortOrderEnum sortDirection = SortOrderEnum.ASCENDING;    /** sort criteria (sorting property name) */    private String sortCriterion;    /** Http servlet request * */    private HttpServletRequest request;    /** default constructor * */    public PaginatedListImpl() {    }    /**     * Create <code>PaginatedListImpl</code> instance using the     * <code>HttpServletRequest</code> object.     *      * @param request     *            <code>HttpServletRequest</code> object.     */    /**     * Create <code>PaginatedListImpl</code> instance using the     * <code>HttpServletRequest</code> object.     *      * @param request     *            <code>HttpServletRequest</code> object.     * @param pageSize     *            the page size - the total number of rows per page.     */    public PaginatedListImpl(HttpServletRequest request, int pageSize) {        sortCriterion = request                .getParameter(ExtendedPaginatedList.IRequestParameters.SORT);        sortDirection = ExtendedPaginatedList.IRequestParameters.DESC                .equals(request                        .getParameter(ExtendedPaginatedList.IRequestParameters.DIRECTION)) ? SortOrderEnum.DESCENDING                : SortOrderEnum.ASCENDING;        pageSize = pageSize != 0 ? pageSize : DEFAULT_PAGE_SIZE;        String page = request                .getParameter(ExtendedPaginatedList.IRequestParameters.PAGE);        index = page == null ? 0 : Integer.parseInt(page) - 1;    }    /**     * Create <code>PaginatedListImpl</code> instance .     *      * @param pageSize     *            the page size - the total number of rows per page.     * @return <code>ExtendedPaginatedList</code> instance.     * @throws Exception -     *             problem while creating paginatedlist object.     */    public ExtendedPaginatedList getPaginatedListObject(int pageSize)            throws Exception {        if (request == null) {            throw new Exception(                    "Cannot create paginated list. Depends upon HttpServletRequest.");        }        return new PaginatedListImpl(request, pageSize);    }    /**     * Set the non-null <code>HttpServletRequest</code> object.     *      * @param request     *            a <code>HttpServletRequest</code> object.     */    public void setRequest(HttpServletRequest request) {        this.request = request;    }    public int getFirstRecordIndex() {        return index * pageSize;    }    public int getIndex() {        return index;    }    public void setIndex(int index) {        this.index = index;    }    public int getPageSize() {        return pageSize;    }    public void setPageSize(int pageSize) {        this.pageSize = pageSize;    }    @SuppressWarnings("unchecked")    public List getList() {        return list;    }    @SuppressWarnings("unchecked")public void setList(List results) {        this.list = results;    }    public int getFullListSize() {        return fullListSize;    }    public void setTotalNumberOfRows(int total) {        this.fullListSize = total;    }    public int getTotalPages() {        return (int) Math.ceil(((double) fullListSize) / pageSize);    }    public int getObjectsPerPage() {        return pageSize;    }    public int getPageNumber() {        return index + 1;    }    public String getSearchId() {        // Not implemented for now.        // This is required, if we want the ID to be included in the paginated        // purpose.        return null;    }    public String getSortCriterion() {        return sortCriterion;    }    public SortOrderEnum getSortDirection() {        return sortDirection;    }    public void setSortCriterion(String sortCriterion) {        this.sortCriterion = sortCriterion;    }    public void setSortDirection(SortOrderEnum sortDirection) {        this.sortDirection = sortDirection;    }public Integer getPageInput() {return pageInput;}public void setPageInput(Integer pageInput) {this.pageInput = pageInput;}}

?有时间再进行改进...

热点排行