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中的Criteria查询,这是实现分页查询的一种方式。Criteria API允许我们以面向对象的方式构建...
为了实现分页功能,我们需要在Struts2中定义Action类来接收用户的翻页请求,并通过Hibernate进行数据查询。具体步骤如下: 1. **定义PageTool类** 在Struts2中,我们通常会定义一个PageTool类来封装分页所需的信息...
在这些场景中,我们可以使用Hibernate分页封装来提高查询效率和减少数据传输量。 Hibernate分页封装是一种非常实用的解决方案,可以满足各种需要分页的需求。但是,我们需要注意,Hibernate分页封装需要与实际业务...
这个过程展示了如何将Struts2负责控制流程,Spring负责依赖注入,Hibernate负责数据访问,三者协作实现Web应用中的分页查询功能。在实际项目中,还需要考虑错误处理、数据校验等细节,以确保系统稳定性和用户体验。
在"Struts+Hibernate分页及条件查询练习"这个项目中,开发者可能采用了以下步骤: 1. **配置Struts和Hibernate**:首先,需要在项目中引入Struts和Hibernate的相关库,配置Struts的struts-config.xml文件和...
在Hibernate中,可以通过设置`setFirstResult`和`setMaxResults`来实现分页查询: ```java final String hql = "from User"; final Query q = s.createQuery(hql); q.setFirstResult(0); // 从第0条记录开始 q....
在Hibernate中,我们可以利用Criteria、HQL(Hibernate Query Language)或SQL查询进行分页。其中,Criteria API提供了一种类型安全的方式来构建查询,支持动态构建查询条件,非常适合后台分页。例如,我们可以使用`...
一、Hibernate分页基础 1. Hibernate的Query和Criteria API都提供了分页功能。使用`setFirstResult()`方法设置查询开始的位置,即第几条记录,以及`setMaxResults()`方法设置一次返回的最大记录数,这两者结合即可...
在Hibernate中,可以使用`Criteria`或`Query`接口来进行分页查询。以下是一个使用`Criteria`接口进行分页查询的示例代码: 1. **创建Session对象**: - 首先需要创建一个`Session`对象,这是Hibernate的核心对象之...
### Hibernate分页基础 1. **Criteria API**:Hibernate的Criteria API允许我们创建动态查询,同时也支持分页。通过设置`setFirstResult()`和`setMaxResults()`方法,可以实现分页效果。例如: ```java Criteria ...
在分页显示中,Hibernate的Criteria、HQL或SQL查询可以用来从数据库中选取特定范围的数据。它提供了SessionFactory和Session接口,前者用于创建线程安全的Session实例,后者则负责执行数据库操作。通过设置查询参数...
在分页场景中,Hibernate主要负责从数据库中查询数据并进行分页处理。通过Criteria、HQL(Hibernate Query Language)或者SQL查询,我们可以获取到特定范围的数据。同时,通过设置FirstResult和MaxResults参数,可以...
HibernateUtil 分页 增删改查 封装 HibernateUtil 分页 增删改查 封装 HibernateUtil 分页 增删改查 封装
总结来说,这个项目展示了如何在Struts、Hibernate和Spring三大框架下实现分页功能,涵盖了前端请求处理、后端分页逻辑以及数据查询的各个方面。无论是SQL还是HQL,都能有效地应用于分页场景,开发者可以根据项目...
在实际开发过程中,我们经常会遇到需要从多个表中获取数据的情况,这时就需要用到连表查询。 #### 1. HBM 映射文件 在提供的内容中,出现了两个HBM映射文件:`TopProductsDeputy.hbm.xml` 和 `TopProducts.hbm.xml...
`Pagehelp.java`可能包含一个静态方法,接受Hibernate的Session对象、查询条件、每页大小和当前页数作为参数,内部会使用Criteria或HQL进行分页查询并返回一个封装了查询结果和分页信息的对象。这个对象可能是自定义...
4. **编写分页逻辑**:在DAO层,使用HQL(Hibernate Query Language)或Criteria API来构造带有分页条件的查询。例如,`from User order by id asc limit ?, ?`,其中问号代表参数,分别是页码和每页大小。 5. **...
在Java的持久化框架Hibernate中,分页查询是一项重要的功能,它允许开发者高效地处理大量数据,避免一次性加载过多的数据导致内存压力。本篇文章将深入探讨Hibernate如何实现分页查询,以及不同数据库环境下分页的...
在获取到分页数据后,我们可以将其封装成一个List对象,并将这个List以及总记录数等信息保存在Action的成员变量中,然后跳转到相应的JSP页面。在JSP页面上,我们可以使用Struts标签库或者EL表达式来显示数据,并创建...
在Web开发中,数据分页查询是一个常见的需求,它能够帮助用户更有效地浏览大量信息,而Hibernate作为一款流行的Java ORM框架,提供了方便的分页查询功能。本篇将详细讲解如何在Hibernate中进行分页查询,并结合...