Cómo realizar paginación en hibernación de primavera.
¿Hay algún ejemplo?
//PageInfo.java define una clase de paginación
paquete ztdz.hibernate;
import java.util.List;
public class PageInfo {
lista de lista pública; // Devuelve el conjunto de registros
cadena pública desde; //hql de
cadena pública donde //hql donde;
public String orderby; //hql orderby
public int totalCount=0; //Número total de registros
public int pageCount=0; número de páginas de registros
public int pageTotalNum=0; //Número total de páginas
public int curPage=0; //Página actual
public boolean haveNext; =false; //Si hay una página siguiente
public boolean havePre=false; //Si hay una página anterior
public List getList() {
lista de retorno;
}
setList público vacío (lista de lista) {
this.list = lista; /p>
public int getTotalCount() {
return totalCount
}
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
}
public int getPageCount() {
return pageCount
}
public void setPageCount(int pageCount) {
this.pageCount = pageCount
}
public int getPageTotalNum() {
return pageTotalNum ;
}
public void setPageTotalNum(int pageTotalNum) {
this.pageTotalNum = pageTotalNum
}
public int getCurPage() {
return curPage
}
public void setCurPage(int curPage) {
this. curPage = curPage;
}
public boolean isHaveNext() {
return haveNex
t;
}
public void setHaveNext(boolean haveNext) {
this.haveNext = haveNext;
public boolean isHavePre() {
return havePre
}
public void setHavePre(boolean havePre) {
esto .havePre = havePre;
}
}
//Clase básica BaseDAO.java para acceso a datos. Para paginación, utilice el método getPage().
}
}
//BaseDAO.java clase básica para acceso a datos. p>
/**
*
*/
paquete ztdz.hibernate.dao.impl
importar java; .sql .SQLException;
importar java.util.List;
importar org.apache.commons.logging.Log;
importar org.apache.commons .logging .LogFactory;
importar org.hibernate.HibernateException;
importar org.hibernate.Query;
importar org.hibernate.Session;
importar org.hibernate.Transaction;
importar org.springframework.orm.hibernate3.HibernateCallback;
importar org.springframework.orm.hibernate3.HibernateTemplate;
importar org.springframework.orm.hibernate3.support.HibernateDaoSupport;
importar ztdz.hibernate.PageInfo;
importar ztdz.hibernate.dao.IBaseDAO;
/**
* @author zhangzhw
*
*/
clase pública BaseDAO extiende HibernateDaoSupport implementa IBaseDAO { p>
registro final estático privado = LogFactory.getLog(BaseDAO.class);
cadena pública de
cadena pública donde; > public String orderBy;
public String queryString;
/**
* Implementar las funciones básicas de adición, eliminación, modificación y consulta
*
* @autor zhangzhw
>
* @serialData 2 de junio de 2008
*/
lista pública findAll(String string) {
// TODO Código auxiliar de método generado automáticamente
log.debug("buscar todos los registros");
intente {
return getHibernateTemplate().find(string);
} catch (RuntimeException re) {
log.error("buscar todo fallido", re
throw re
} p>);
}
public int getCount(String from, String donde) {
String fromTrim = from.substring(from.indexOf("from"));
p>
return (Entero) findRec("select count(*) " fromTrim " " donde)
.get(0);
}
public void adjuntarClean(Objeto objeto) {
}
public void adjuntarDirty(Objeto objeto) {
}
public void eliminar (objeto objeto) {
log.debug("eliminar instancia de usuarios");
intente {
getHibernateTemplate().delete(objeto) ;
p>
log.debug("eliminación exitosa");
} catch (RuntimeException re) {
log.error("eliminación falló", re);
p>
throw re;
}
}
lista pública findRec(String cadena ) {
this.queryString = string;
log.debug("buscar registros");
prueba {
return getHibernateTemplate ().find(queryString);
} catch (RuntimeException re) {
log.error("buscar todo fallido", re
throw); re;
}
}
public void save(Objeto objeto) {
log.debug("guardar instancia de usuarios
e");
intente {
getHibernateTemplate().save(object);
log.debug("guardado exitoso");
} catch (RuntimeException re) {
log.error("al guardar falló", re
throw re
}
}
public void merge(Objeto objeto) {
log.debug("guardando instancia de Usuarios");
try {
>getHibernateTemplate().merge(objeto);
log.debug("guardado exitoso");
} catch (RuntimeException re) {
log.error("al guardar falló", re);
tirar re;
}
}
/**
* La siguiente es una consulta basada en paginación
*
* @author zhangzhw
* @serialData 2 de junio de 2008 p> p>
*/
/**
* método getPage, obtiene la información de la página N
*/
public PageInfo getPage(String from, String donde, String orderBy,
int pageNo, int pageCount) {
PageInfo pageInfo = new PageInfo(); > pageInfo .from = desde
pageInfo.where = donde
pageInfo.orderby = orderBy
pageInfo.pageCount = pageCount
pageInfo.totalCount = getCount(desde, dónde);
//Información de paginación
if (pageInfo.totalCount pageCount == 0) {
pageInfo.pageTotalNum = pageInfo.totalCount / pageInfo.pageCount;
if (pageInfo.pageTotalNum == 0)
pageInfo.pageTotalNum = 1
} más; p>
pageInfo.pageTotalNum = pageInfo.totalCount / pageCount 1
// Establece la página actual
if (pageNo lt; 1)
páginaInf
o.curPage = 1;
else if (pageNo gt; pageInfo.pageTotalNum)
pageInfo.curPage = pageInfo.pageTotalNum
else
pageInfo.curPage = pageNo;
// Establece la información de la página anterior y siguiente
if (pageNo lt; pageInfo.pageTotalNum)
pageInfo. haveNext = true;
if (pageNo gt; 1)
pageInfo.havePre = true;
// error de código de consulta de paginación
// pageInfo.list=findRec(desde donde " limit " (pageNo-1)*pageCount
// " , " pageCount " " orderBy);
// pageInfo. list =findRec(de donde " límite 1, 3 " orderBy );
// Método de implementación sin error
pageInfo.list = findRec(de donde orderBy, (pageInfo.curPage - 1)
* pageCount, pageCount);
return pageInfo;
}
public PageInfo getPage(String hql, int pageNo, int pageCount) {
// Descomponer hql en desde donde orderBy
Cadena desde, dónde, orderBy;
from = parseHql(hql, 1);
donde = parseHql(hql, 2);
orderBy = parseHql(hql, 3);
return getPage(from, donde, orderBy, pageNo, pageCount
}
información de página pública getPage(String hql, int pageNo) {
return getPage(hql, pageNo, 20); p> }
// Método adicional, desmantelar hql (hql simple, no usar select, no usar límite, etc.)
private String parseHql(String hql, int type ) { p>
cambiar (tipo) {
caso 1:
if (hql.indexOf("where") gt; 0)
return hql .substring(1, hql.indexOf("dónde") - 1);
> else if (hql.indexOf("orderby") gt; 0)
return hql.substring(1, hql.indexOf("orderby") - 1);
else
devolver nulo;
caso 2:
if (hql.indexOf("where") gt; 0) {
if (hql.indexOf("orderby") gt; 0)
return hql.substring(hql.indexOf("where"), hql
.indexOf("orderby") - 1);
else
return hql.substring(hql.indexOf("where"));
} else
return null;
caso 3:
if (hql.indexOf("orderby") gt; 0)
return hql.substring(hql.indexOf(" orderby"));
else
devolver nulo;
}
devolver nulo;
}
// Método de consulta de registros en páginas específicas
public List findRec(final String hql, final int firstResult,
final int maxResults) {
return getHibernateTemplate().executeFind(new HibernateCallback() {
objeto público doInHibernate(Session s) lanza HibernateException,
SQLException {
consulta de consulta = s.createQuery(hql);
query.setFirstResult(firstResult);
query.setMaxResults(maxResults);
Lista lista = query.list( );
lista de retorno
}
});
}
público booleano transSave(final). Lista de lista) {
return (booleano) getHibernateTemplate().execute(
new HibernateCallback() {
objeto público doInHibernate(Session s)
lanza HibernateException,
SQLException {
prueba {
for (Object o : list) {
s.save(o); p>
} catch (Excepción e) {
e.printStackTrace();
devuelve falso
}
return true;
}
});
}
public boolean transSave(lista final[] lista) {
return (booleano) getHibernateTemplate().execute(
new HibernateCallback() {
objeto público doInHibernate(Session s)
lanza HibernateException, SQLException {
intente {
for (int i = 0; i lt; list.length; i) {
for (Objeto o: lista[i ]) {
s.save(o);
}
}
} captura (Excepción e) {
e.printStackTrace();
devuelve falso
}
devuelve verdadero;
});
}
public boolean transSave(lista final[], bandera booleana)
{
return (Booleano) getHibernateTemplate().execute(
new HibernateCallback() {
objeto público doInHibernate(Session s)
lanza HibernateException, SQLException {
intente {
for (int i = 0; i lt; list.length; i) {
for (Objeto o: lista[i]) { p>
s.saveOrUpdate(o);
}
}
} captura (Excepción e) {
e .printStackTrace();
devuelve falso;
}
devuelve verdadero;
}
});
}
No escribiré sobre otras configuraciones. Si aún no lo comprende, se recomienda aprender desde lo básico.