`
wfzhanga
  • 浏览: 70280 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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;
	}
}

 有时间再进行改进...

分享到:
评论

相关推荐

    Hibernate中分页查询的封装。

    本文将深入探讨如何在Hibernate中进行分页查询的封装,并提供相关的源码和工具使用方法。 首先,我们需要了解Hibernate中的Criteria查询,这是实现分页查询的一种方式。Criteria API允许我们以面向对象的方式构建...

    STRUTS2+HIBERNATE详细的分页实现代码详细的分页实现代码

    为了实现分页功能,我们需要在Struts2中定义Action类来接收用户的翻页请求,并通过Hibernate进行数据查询。具体步骤如下: 1. **定义PageTool类** 在Struts2中,我们通常会定义一个PageTool类来封装分页所需的信息...

    Hibernate分页封装

    在这些场景中,我们可以使用Hibernate分页封装来提高查询效率和减少数据传输量。 Hibernate分页封装是一种非常实用的解决方案,可以满足各种需要分页的需求。但是,我们需要注意,Hibernate分页封装需要与实际业务...

    hibernate分页查询功能

    这个过程展示了如何将Struts2负责控制流程,Spring负责依赖注入,Hibernate负责数据访问,三者协作实现Web应用中的分页查询功能。在实际项目中,还需要考虑错误处理、数据校验等细节,以确保系统稳定性和用户体验。

    Struts和Hibernate分页及查询

    在"Struts+Hibernate分页及条件查询练习"这个项目中,开发者可能采用了以下步骤: 1. **配置Struts和Hibernate**:首先,需要在项目中引入Struts和Hibernate的相关库,配置Struts的struts-config.xml文件和...

    Hibernate HQL查询 分页查询 模糊查询.docx

    在Hibernate中,可以通过设置`setFirstResult`和`setMaxResults`来实现分页查询: ```java final String hql = "from User"; final Query q = s.createQuery(hql); q.setFirstResult(0); // 从第0条记录开始 q....

    hibernate+struts后台分页

    在Hibernate中,我们可以利用Criteria、HQL(Hibernate Query Language)或SQL查询进行分页。其中,Criteria API提供了一种类型安全的方式来构建查询,支持动态构建查询条件,非常适合后台分页。例如,我们可以使用`...

    用户Hibernate实现的一个分页

    一、Hibernate分页基础 1. Hibernate的Query和Criteria API都提供了分页功能。使用`setFirstResult()`方法设置查询开始的位置,即第几条记录,以及`setMaxResults()`方法设置一次返回的最大记录数,这两者结合即可...

    用Hibernate实现分页查询.docx

    在Hibernate中,可以使用`Criteria`或`Query`接口来进行分页查询。以下是一个使用`Criteria`接口进行分页查询的示例代码: 1. **创建Session对象**: - 首先需要创建一个`Session`对象,这是Hibernate的核心对象之...

    hibernate实现分页

    ### Hibernate分页基础 1. **Criteria API**:Hibernate的Criteria API允许我们创建动态查询,同时也支持分页。通过设置`setFirstResult()`和`setMaxResults()`方法,可以实现分页效果。例如: ```java Criteria ...

    基于strus2,spring,hibernate的一个分页数据显示的小程序

    在分页显示中,Hibernate的Criteria、HQL或SQL查询可以用来从数据库中选取特定范围的数据。它提供了SessionFactory和Session接口,前者用于创建线程安全的Session实例,后者则负责执行数据库操作。通过设置查询参数...

    用Struts+Hibernate做的分页

    在分页场景中,Hibernate主要负责从数据库中查询数据并进行分页处理。通过Criteria、HQL(Hibernate Query Language)或者SQL查询,我们可以获取到特定范围的数据。同时,通过设置FirstResult和MaxResults参数,可以...

    HibernateUtil 分页 增删改查 封装

    HibernateUtil 分页 增删改查 封装 HibernateUtil 分页 增删改查 封装 HibernateUtil 分页 增删改查 封装

    Struts+Hibernate+Spring的分页

    总结来说,这个项目展示了如何在Struts、Hibernate和Spring三大框架下实现分页功能,涵盖了前端请求处理、后端分页逻辑以及数据查询的各个方面。无论是SQL还是HQL,都能有效地应用于分页场景,开发者可以根据项目...

    Hibernate连表查询 Hibernate连表查询

    在实际开发过程中,我们经常会遇到需要从多个表中获取数据的情况,这时就需要用到连表查询。 #### 1. HBM 映射文件 在提供的内容中,出现了两个HBM映射文件:`TopProductsDeputy.hbm.xml` 和 `TopProducts.hbm.xml...

    hibernate通用分页

    `Pagehelp.java`可能包含一个静态方法,接受Hibernate的Session对象、查询条件、每页大小和当前页数作为参数,内部会使用Criteria或HQL进行分页查询并返回一个封装了查询结果和分页信息的对象。这个对象可能是自定义...

    Spring+Hibernate完整分页

    4. **编写分页逻辑**:在DAO层,使用HQL(Hibernate Query Language)或Criteria API来构造带有分页条件的查询。例如,`from User order by id asc limit ?, ?`,其中问号代表参数,分别是页码和每页大小。 5. **...

    hibernate的分页查询

    在Java的持久化框架Hibernate中,分页查询是一项重要的功能,它允许开发者高效地处理大量数据,避免一次性加载过多的数据导致内存压力。本篇文章将深入探讨Hibernate如何实现分页查询,以及不同数据库环境下分页的...

    Struts + Hibernate 实现简单分页功能

    在获取到分页数据后,我们可以将其封装成一个List对象,并将这个List以及总记录数等信息保存在Action的成员变量中,然后跳转到相应的JSP页面。在JSP页面上,我们可以使用Struts标签库或者EL表达式来显示数据,并创建...

    Hibernate分页查询

    在Web开发中,数据分页查询是一个常见的需求,它能够帮助用户更有效地浏览大量信息,而Hibernate作为一款流行的Java ORM框架,提供了方便的分页查询功能。本篇将详细讲解如何在Hibernate中进行分页查询,并结合...

Global site tag (gtag.js) - Google Analytics